Symbolic Regression with Likelihood-Based Objectives¶
About¶
The purpose of this notebook is to demonstrate how Likelihood-based objectives can be used similar to GLMs and other traditional regression techniques, and to encourage users of GLMs to consider Symbolic Regression in some use cases, as it takes the luck and guess-work out of determining the right relationship between mean and the predictors.
Background¶
By default, the Symbolic Regression package in Julia uses Mean Square Error as the default objective to minimise (as can be seen in github). Mean Square Error objective is common in regression techniques, including linear regression via Ordinary Least Squares. However, it may not necessarily be suitable or appropriate, espescially if:
- apriori information about the probability distribution of the predicted target ($y$) is known e.g. it is Gamma, or Poisson
- the predicted target has a restricted range e.g. non-negative count data, binary data, confined between 0 and 1.
Traditional GLMs¶
Traditional GLMs use likelihood-based objective functions to fit parameters, and to select predictors:
- A likelihood-based quantity known as deviance) is used to fit parameter coefficient estimates $\beta_1, \beta_2$ etc...
- Likelihood-based quantities like AIC and BIC are also used as objectives to perform forward/ backward selection to determine which predictors ($x_1, x_2$ etc...) are added/removed to the linear term (η). They combine the log-likelihood with a penalty term to penalise overfitting & model complexity.
Using likelihood-based objectives in this way results in a fitted model that:
- uses all available apriori information, and hence a more accurate model
- has Maximum Likelihood Estimate parameter estimates.
Using Custom Likelihood-Based Objectives With Symbolic Regression¶
The Symbolic Regression package in Julia allows custom objective functions, and these can be set by the user to be likelihood-based, namely the deviance as used in GLMs. This allows Symbolic Regression to achieve the same benefits of likelihood-based objectives. However, unlike with GLMs, with symbolic regression, we are no longer constrained by the requirement that our predictors be linear, as Symbolic Regression is able to search the space of all feasible functions involving our predictor variables. This allows symbolic regression to naturally discover predictors that have:
- non-linear effects
- interaction effects
- a desired balance of accuracy (goodness of fit) and simplicity by penalising equation complexity
Users of GLMs by contrast will need to resort to additional steps to achieve the same goals, and these steps often require lucky guesses about the nature of the non-linearity or interaction to trial and error.
A brilliant demonstration of the Symbolic Regression package searching for an equation is available on Github:
Credit Miles Cranmer.
Setup¶
# Check threads being used. Up to 10 for my M4 MacBook Air.
using Base.Threads
Threads.nthreads()
# Set random seed variables for reproducibility
my_seed = 2025;
# load packages
using Pkg, Statistics, Random, Distributions, DataFrames, Symbolics, SymbolicUtils, StatsBase, Plots, PlotlyJS;
using SymbolicRegression: SRRegressor, node_to_symbolic, eval_tree_array
using LoopVectorization # Helps speed up but experiemental
using MLJ: machine, fit!, predict, report
# Likelihood-based objective functions from GLM and BetaRegression packages
using GLM: devresid, linkinv, isvalid, LogitLink, LogLink, IdentityLink, InverseLink, ProbitLink
using BetaRegression: devresid
import Latexify: latexify
The WebIO Jupyter extension was not detected. See the WebIO Jupyter integration documentation for more information.
# PlotlyJS backend for Plots, to render interactive 3D
plotlyjs();
# Use in case simplify times out/ stuck in loop
function safe_simplify(expr; timeout=5)
result = Ref{Any}(nothing)
task = @async begin
try
result[] = simplify(expr, expand=true)
catch e
result[] = e
end
end
start_time = time()
while !istaskdone(task) && (time() - start_time < timeout)
sleep(0.1) # Yield to the CPU
end
if istaskdone(task)
return result[]
else
# We can't easily "kill" a thread in Julia safely,
# but we can ignore the result and warn the user.
@warn "Simplify timed out after $timeout seconds. Returning original expression."
return expr
end
end
safe_simplify (generic function with 1 method)
Define Custom Loss Function¶
Explanation
The formula for deviance is:
$D = -2[\ell(\hat{\boldsymbol{\beta}}) - \ell_s]$
Most implementations of GLMs use what's known as the deviance residual squared, which is the contribution an individual observation makes to the overall deviance. These are summed over to get the total deviance. $\sum_{i} d_i^2 = D$
Deviance residual squared formulas have been directly imported from the GLM package for Julia with:
using GLM: devresid
The current formula used for Gamma at time of writing is shown below (available at: https://github.com/JuliaStats/GLM.jl/blob/23a4e2040e1279652e55fcd2f5e74018de944923/src/glmtools.jl#L419)
devresid(::Gamma, y, μ::Real) = -2 * (log(y / μ) - (y - μ) / μ)
# Define custom objective function, using devresid
"""
custom_likelihood_based_obj(D)
Returns a custom loss function (closure) that calculates the total deviance
for a specific GLM family D.
Allowable link function options from GLM package:
- LogitLink()
- LogLink()
- IdentityLink()
- InverseLink()
- ProbitLink()
- CauchitLink() and more
Allowable families (aka distributions):
- Bernoulli() - used for logistic regression
- Binomial()
- Gamma()
- Geometric()
- InverseGaussian()
- NegativeBinomial()
- Normal()
- Poisson()
- Beta() - enabled by the separate BetaRegression.jl
https://juliastats.org/GLM.jl/stable/
"""
function custom_likelihood_based_obj(family, link_function=IdentityLink(), weights_vec = nothing)
# This is inner function is returned by custom_likelihood_based_obj, and is what is given as an input to SRRegressor:
function custom_likelihood_based_obj_w_dist(tree, dataset, options)
eta, flag = eval_tree_array(tree, dataset.X, options)
!flag && return Inf
# Use GLM's own inverse link logic
# linkinv(link, eta) transforms eta -> mu
mu_pred = linkinv.(link_function, eta)
# Calculate total deviance
if weights_vec === nothing
deviances = devresid.(family, dataset.y, mu_pred)
else
# weight * devresid
deviances = weights_vec .* devresid.(family, dataset.y, mu_pred)
end
# mean deviance might be better for
# mean_deviance = sum(deviances) / length(dataset.y)
mean_deviance = sum(deviances)
# Ensure the loss is a non-negative scalar
return mean_deviance
end
# Return the inner function (the closure)
return custom_likelihood_based_obj_w_dist
end
custom_likelihood_based_obj
Binary Logistic (Bernoulli) Regression¶
Generate Mock Data¶
In this step we generate Mock Data, with a predetermined distribution. We will then see if Symbolic Regression is able to recover the equation just using data alone.
$Y|x \sim Bernoulli(p) $ where $ E(Y|x) = p(x) = logistic(x_1x_2^{3.2} + x_1) $
With $0 \le x_1 \le 2$ and $ 0 \le x_2 \le 1 $. $ logistic(x) = \frac{1}{1 + e^{-x}} $ is used to ensure that $ E(Y|x) $ takes a values between 0 and 1.
# Define logistic function
logistic(x::T) where {T <: Real} = inv(one(T) + exp(-x));
# Number of mock observations generated
obs=5000
# Generate random X values
Random.seed!(my_seed)
mockdata = DataFrame(
x1 = rand(Uniform(0,2), obs),
x2 = rand(Uniform(0,1), obs)
)
# What is standard deviation as a percent of mean
# Higher value = more noise
std_over_mean = 0.5
# Generate observations from Gamma distribution, with mean a function of the X values, like a GLM
transform!(mockdata, [:x1, :x2] => ((x1, x2) -> logistic.(x1.*(x2.^3.2) + x1)) => :mean)
transform!(mockdata, :mean => ((mean) -> Float64.(rand.(Bernoulli.(mean)))) => :Y_obs)
# Note that SRRegressor requires Conintuous y, and hence integer values have been converted to Float64
first(mockdata, 10)
| Row | x1 | x2 | mean | Y_obs |
|---|---|---|---|---|
| Float64 | Float64 | Float64 | Float64 | |
| 1 | 1.15326 | 0.00421048 | 0.760106 | 1.0 |
| 2 | 1.6652 | 0.67699 | 0.895022 | 1.0 |
| 3 | 0.98597 | 0.445514 | 0.742717 | 1.0 |
| 4 | 1.78637 | 0.476503 | 0.875774 | 0.0 |
| 5 | 1.74249 | 0.655261 | 0.899619 | 1.0 |
| 6 | 1.73563 | 0.924574 | 0.956314 | 0.0 |
| 7 | 1.55002 | 0.669367 | 0.878578 | 1.0 |
| 8 | 1.21856 | 0.856682 | 0.87668 | 1.0 |
| 9 | 0.141679 | 0.266188 | 0.535871 | 0.0 |
| 10 | 1.3485 | 0.517848 | 0.819458 | 1.0 |
# Subset
X = mockdata[:, [:x1, :x2]];
y = mockdata[:, :Y_obs];
Visualise Mock Data¶
# 1. Plot Observed Data containing noise
Plots.scatter(
mockdata.x1,
mockdata.x2,
mockdata.Y_obs,
label = "Observations with noise",
markerstrokewidth = 0,
markersize = 1, # smaller dots
alpha = 0.9, # more transparency
color = :deepskyblue3, # clearer blue than default
xlabel = "x1",
ylabel = "x2",
zlabel = "Obs / Mean",
legend = :bottomright,
title = "Actual Mean vs Observations",
size = (1000,600)
)
# 2. Plot True Underlying Mean
Plots.scatter!(
mockdata.x1,
mockdata.x2,
mockdata.mean,
label = "True underlying mean",
markerstrokewidth = 0,
markersize = 1, # slightly larger for emphasis
alpha = 0.9, # solid but not harsh
color = :firebrick2 # strong red, not neon
)
# plot!(
# gridalpha = 0.12,
# camera = (30, 25)
# )
Fit Model With Custom Loss Function¶
# Select Family and Link function (optional - by default identity link), and Weights
FamilyChoice = Bernoulli()
LinkFunctionChoice = LogitLink()
weights_vec = nothing
model = SRRegressor(
binary_operators=[+,*,-,/,^, max, min],
unary_operators=[abs, inv, log, exp, sin, cos],
niterations=50,
should_simplify = true,
should_optimize_constants = true,
print_precision=2,
seed=my_seed,
turbo = true,
save_to_file = false,
loss_function=custom_likelihood_based_obj(FamilyChoice, LinkFunctionChoice, weights_vec),
progress = false);
# Train model
mach = machine(model, X, y)
fit!(mach)
[ Info: Training machine(SRRegressor(defaults = nothing, …), …). [ Info: Started!
Expressions evaluated per second: 2.280e+04 Progress: 122 / 1550 total iterations (7.871%) ════════════════════════════════════════════════════════════════════════════════════════════════════ ─────────────────────────────────────────────────────────────────────────────────────────────────── Complexity Loss Score Equation 1 5.319e+03 0.000e+00 y = x1 3 5.292e+03 2.553e-03 y = x1 / 0.85 4 5.251e+03 7.698e-03 y = x1 / cos(x2) 6 5.251e+03 4.083e-05 y = x1 / cos(x2 ^ 1.3) 7 5.250e+03 1.888e-04 y = x1 * (1.9 ^ (x2 ^ 2.8)) 8 5.246e+03 6.502e-04 y = x1 / cos(cos(exp(x2) * -1.1)) ─────────────────────────────────────────────────────────────────────────────────────────────────── ════════════════════════════════════════════════════════════════════════════════════════════════════ Press 'q' and then <enter> to stop execution early. Expressions evaluated per second: 1.960e+04 Progress: 231 / 1550 total iterations (14.903%) ════════════════════════════════════════════════════════════════════════════════════════════════════ ─────────────────────────────────────────────────────────────────────────────────────────────────── Complexity Loss Score Equation 1 5.319e+03 0.000e+00 y = x1 3 5.292e+03 2.553e-03 y = x1 / 0.85 4 5.251e+03 7.698e-03 y = x1 / cos(x2) 6 5.250e+03 6.743e-05 y = x1 / cos(x2 ^ 1.2) 7 5.250e+03 1.356e-04 y = x1 * (1.9 ^ (x2 ^ 2.8)) 8 5.246e+03 6.502e-04 y = x1 / cos(cos(exp(x2) * -1.1)) 19 5.246e+03 7.150e-06 y = x1 * inv(cos(max(x2, sin(cos(sin(inv(inv(0.37) * x2) *... cos(0.37)) + 1.3))))) 22 5.245e+03 5.555e-05 y = max(x2 ^ ((0.94 / inv(inv(x1))) + 84), 1.8 / inv(abs(m... ax(0.56, x2) / abs(abs(inv(x1)))))) 23 5.245e+03 1.244e-06 y = max(x2 ^ ((0.84 / inv(abs(inv(x1)))) + 84), 1.8 / inv(... max(0.56, x2) / abs(abs(inv(abs(x1)))))) 24 5.243e+03 3.520e-04 y = abs(max(1.8, abs(0.21 ^ inv(1.1 / inv(abs(x1))))) / ab... s(inv(max(max(x2, x2), 0.56) / inv(abs(x1))))) 26 5.243e+03 2.205e-08 y = max(1.8, abs(0.21 ^ abs(inv(max(x2, 1.1) / inv(x1)))))... / abs(abs(abs(inv(max(max(x2, x2), 0.56) / inv(x1))))) 28 5.241e+03 2.488e-04 y = max(1.8, abs((-0.39 - -0.61) ^ inv(min(max(x2, 1.1) / ... inv(x1), x2)))) / abs(abs(inv(max(x2, max(x2, 0.56)) / inv... (x1)))) ─────────────────────────────────────────────────────────────────────────────────────────────────── ════════════════════════════════════════════════════════════════════════════════════════════════════ Press 'q' and then <enter> to stop execution early. Expressions evaluated per second: 1.950e+04 Progress: 326 / 1550 total iterations (21.032%) ════════════════════════════════════════════════════════════════════════════════════════════════════ ─────────────────────────────────────────────────────────────────────────────────────────────────── Complexity Loss Score Equation 1 5.319e+03 0.000e+00 y = x1 3 5.292e+03 2.553e-03 y = x1 / 0.85 4 5.251e+03 7.698e-03 y = x1 / cos(x2) 6 5.250e+03 6.743e-05 y = x1 / cos(x2 ^ 1.2) 7 5.250e+03 1.356e-04 y = x1 * (1.9 ^ (x2 ^ 2.8)) 8 5.246e+03 6.502e-04 y = x1 / cos(cos(exp(x2) * -1.1)) 15 5.246e+03 4.574e-06 y = max(x1, 1.9 * (min(x1 / 0.8, x2 * 2.7) * (x2 * 0.8))) 19 5.245e+03 5.056e-05 y = abs(max(1.8, abs(0.21 ^ inv(x2))) / inv(max(max(x2, -0... .79), 0.56) / abs(inv(x1)))) 20 5.242e+03 6.283e-04 y = max(1.8, abs(0.21 ^ inv(1 / inv(x1)))) / abs(abs(inv(m... ax(x2, 0.56) / inv(x1)))) 22 5.239e+03 2.144e-04 y = max(1.8, abs(0.21 ^ inv(min(x2, 1 / inv(x1))))) / inv(... abs(max(0.56, x2) / inv(abs(x1)))) ─────────────────────────────────────────────────────────────────────────────────────────────────── ════════════════════════════════════════════════════════════════════════════════════════════════════ Press 'q' and then <enter> to stop execution early. Expressions evaluated per second: 1.850e+04 Progress: 411 / 1550 total iterations (26.516%) ════════════════════════════════════════════════════════════════════════════════════════════════════ ─────────────────────────────────────────────────────────────────────────────────────────────────── Complexity Loss Score Equation 1 5.319e+03 0.000e+00 y = x1 3 5.292e+03 2.553e-03 y = x1 / 0.85 4 5.251e+03 7.698e-03 y = x1 / cos(x2) 6 5.250e+03 6.743e-05 y = x1 / cos(x2 ^ 1.2) 7 5.250e+03 1.356e-04 y = x1 * (1.9 ^ (x2 ^ 2.8)) 8 5.246e+03 6.502e-04 y = x1 / cos(cos(exp(x2) * -1.1)) 15 5.246e+03 4.574e-06 y = max(x1, 1.9 * (min(x1 / 0.8, x2 * 2.7) * (x2 * 0.8))) 17 5.245e+03 1.011e-04 y = abs(max(1.8, abs(0.21 ^ inv(x2))) / inv(max(x2, 0.56) ... / abs(inv(x1)))) 19 5.242e+03 3.142e-04 y = max(abs(0.21 ^ inv(1 / inv(x1))), 1.8 / abs(inv(max(x2... , 0.56) / inv(x1)))) 20 5.242e+03 2.963e-07 y = max(abs(0.21 ^ inv(1 / inv(x1))), 1.8) / abs(inv(max(x... 2, 0.56) / inv(abs(x1)))) 22 5.239e+03 2.142e-04 y = max(abs(0.21 ^ inv(min(x2, 1 / inv(x1)))), 1.8) / inv(... max(0.56, x2) / abs(abs(inv(x1)))) ─────────────────────────────────────────────────────────────────────────────────────────────────── ════════════════════════════════════════════════════════════════════════════════════════════════════ Press 'q' and then <enter> to stop execution early. Expressions evaluated per second: 1.840e+04 Progress: 521 / 1550 total iterations (33.613%) ════════════════════════════════════════════════════════════════════════════════════════════════════ ─────────────────────────────────────────────────────────────────────────────────────────────────── Complexity Loss Score Equation 1 5.319e+03 0.000e+00 y = x1 3 5.292e+03 2.553e-03 y = x1 / 0.85 4 5.251e+03 7.698e-03 y = x1 / cos(x2) 6 5.250e+03 6.743e-05 y = x1 / cos(x2 ^ 1.2) 7 5.250e+03 1.356e-04 y = x1 * (1.9 ^ (x2 ^ 2.8)) 8 5.246e+03 6.502e-04 y = x1 / cos(cos(exp(x2) * -1.1)) 13 5.246e+03 2.030e-05 y = x1 / cos(cos(exp(x2 * sin(x2 + 0.85)) * -1.1)) 17 5.245e+03 3.318e-05 y = abs(max(1.8, abs(0.21 ^ inv(x2))) / inv(max(x2, 0.56) ... / abs(inv(x1)))) 18 5.245e+03 1.483e-09 y = max(abs(0.21 ^ inv(x2)), 1.8) / inv(max(0.56, abs(x2))... / abs(abs(inv(x1)))) 19 5.242e+03 6.286e-04 y = max(1.8, abs(0.21 ^ inv(1 / inv(x1)))) / inv(max(x2, 0... .56) / abs(inv(x1))) 22 5.239e+03 1.428e-04 y = max(abs(0.21 ^ inv(min(x2, 1 / inv(x1)))), 1.8) / inv(... max(0.56, x2) / abs(abs(inv(x1)))) ─────────────────────────────────────────────────────────────────────────────────────────────────── ════════════════════════════════════════════════════════════════════════════════════════════════════ Press 'q' and then <enter> to stop execution early. Expressions evaluated per second: 1.840e+04 Progress: 604 / 1550 total iterations (38.968%) ════════════════════════════════════════════════════════════════════════════════════════════════════ ─────────────────────────────────────────────────────────────────────────────────────────────────── Complexity Loss Score Equation 1 5.319e+03 0.000e+00 y = x1 3 5.292e+03 2.553e-03 y = x1 / 0.85 4 5.251e+03 7.698e-03 y = x1 / cos(x2) 6 5.250e+03 6.743e-05 y = x1 / cos(x2 ^ 1.2) 7 5.250e+03 1.356e-04 y = x1 * (1.9 ^ (x2 ^ 2.8)) 8 5.246e+03 6.502e-04 y = x1 / cos(cos(exp(x2) * -1.1)) 10 5.246e+03 1.822e-05 y = (x1 / cos(cos(-1.1 * exp(x2)))) * 0.98 13 5.246e+03 2.169e-05 y = x1 / cos(cos(exp(x2 * sin(x2 + 0.85)) * -1.1)) 15 5.243e+03 2.485e-04 y = max(0.21 ^ inv(x1), 1.8 / inv(max(0.56, x2) / abs(inv(... x1)))) 16 5.243e+03 2.924e-07 y = max(0.21 ^ inv(x1), 1.8) / abs(inv(abs(max(0.56, x2) /... inv(x1)))) 18 5.243e+03 5.218e-05 y = (max(0.21 ^ inv(x1), 1.9) / inv(max(x2, 0.56) / abs(ab... s(inv(x1))))) - 0.045 19 5.242e+03 1.598e-04 y = max(1.8, abs(0.21 ^ inv(1 / inv(x1)))) / inv(max(x2, 0... .56) / abs(inv(x1))) 21 5.239e+03 2.142e-04 y = max(abs(0.21 ^ inv(min(x2, 1 / inv(x1)))), 1.8) / inv(... abs(max(0.56, x2) / inv(x1))) ─────────────────────────────────────────────────────────────────────────────────────────────────── ════════════════════════════════════════════════════════════════════════════════════════════════════ Press 'q' and then <enter> to stop execution early. Expressions evaluated per second: 1.860e+04 Progress: 714 / 1550 total iterations (46.065%) ════════════════════════════════════════════════════════════════════════════════════════════════════ ─────────────────────────────────────────────────────────────────────────────────────────────────── Complexity Loss Score Equation 1 5.319e+03 0.000e+00 y = x1 3 5.292e+03 2.553e-03 y = x1 / 0.85 4 5.251e+03 7.698e-03 y = x1 / cos(x2) 6 5.250e+03 6.743e-05 y = x1 / cos(x2 ^ 1.2) 7 5.250e+03 1.356e-04 y = x1 * (1.9 ^ (x2 ^ 2.8)) 8 5.246e+03 6.502e-04 y = x1 / cos(cos(exp(x2) * -1.1)) 10 5.246e+03 2.572e-05 y = x1 / cos(cos(-1.1 * exp(x2)) * 0.98) 13 5.246e+03 1.669e-05 y = x1 / cos(cos(exp(x2 * sin(x2 + 0.85)) * -1.1)) 14 5.243e+03 4.972e-04 y = max(1.8 / inv(max(x2, 0.56) / inv(x1)), 0.21 ^ inv(x1)... ) 17 5.243e+03 3.480e-05 y = abs(max(1.9 / inv(max(x2, 0.56) / inv(x1)), 0.21 ^ inv... (x1))) - 0.045 19 5.242e+03 7.987e-05 y = max(1.8, abs(0.21 ^ inv(1 / inv(x1)))) / inv(max(x2, 0... .56) / abs(inv(x1))) 20 5.239e+03 4.285e-04 y = max(abs(0.21 ^ inv(min(x2, 1 / inv(x1)))), 1.8) / inv(... max(0.56, x2) / inv(x1)) 23 5.239e+03 1.131e-05 y = (max(1.8, abs(0.21 ^ inv(min(1 / inv(x1), x2)))) / inv... (max(x2, 0.56) / inv(abs(x1)))) - 0.017 ─────────────────────────────────────────────────────────────────────────────────────────────────── ════════════════════════════════════════════════════════════════════════════════════════════════════ Press 'q' and then <enter> to stop execution early. Expressions evaluated per second: 1.970e+04 Progress: 820 / 1550 total iterations (52.903%) ════════════════════════════════════════════════════════════════════════════════════════════════════ ─────────────────────────────────────────────────────────────────────────────────────────────────── Complexity Loss Score Equation 1 5.319e+03 0.000e+00 y = x1 3 5.292e+03 2.553e-03 y = x1 / 0.85 4 5.251e+03 7.698e-03 y = x1 / cos(x2) 6 5.250e+03 6.743e-05 y = x1 / cos(x2 ^ 1.2) 7 5.250e+03 1.356e-04 y = x1 * (1.9 ^ (x2 ^ 2.8)) 8 5.246e+03 6.502e-04 y = x1 / cos(cos(exp(x2) * -1.1)) 10 5.246e+03 2.572e-05 y = x1 / cos(cos(-1.1 * exp(x2)) * 0.98) 13 5.243e+03 1.824e-04 y = max(1.8 / inv(max(x2, 0.56)), 0.21 ^ inv(x1)) * x1 17 5.243e+03 2.610e-05 y = abs(max(1.9 / inv(max(x2, 0.56) / inv(x1)), 0.21 ^ inv... (x1))) - 0.045 18 5.242e+03 1.597e-04 y = max(abs(0.21 ^ inv(1 / inv(x1))), 1.8 / inv(max(x2, 0.... 56) / inv(x1))) 20 5.239e+03 2.142e-04 y = max(abs(0.21 ^ inv(min(x2, 1 / inv(x1)))), 1.8) / inv(... max(0.56, x2) / inv(x1)) 23 5.239e+03 1.131e-05 y = (max(1.8, abs(0.21 ^ inv(min(1 / inv(x1), x2)))) / inv... (max(x2, 0.56) / inv(abs(x1)))) - 0.017 ─────────────────────────────────────────────────────────────────────────────────────────────────── ════════════════════════════════════════════════════════════════════════════════════════════════════ Press 'q' and then <enter> to stop execution early. Expressions evaluated per second: 1.950e+04 Progress: 914 / 1550 total iterations (58.968%) ════════════════════════════════════════════════════════════════════════════════════════════════════ ─────────────────────────────────────────────────────────────────────────────────────────────────── Complexity Loss Score Equation 1 5.319e+03 0.000e+00 y = x1 3 5.292e+03 2.553e-03 y = x1 / 0.85 4 5.251e+03 7.698e-03 y = x1 / cos(x2) 6 5.250e+03 6.743e-05 y = x1 / cos(x2 ^ 1.2) 7 5.250e+03 1.356e-04 y = x1 * (1.9 ^ (x2 ^ 2.8)) 8 5.246e+03 6.502e-04 y = x1 / cos(cos(exp(x2) * -1.1)) 10 5.246e+03 2.572e-05 y = x1 / cos(cos(-1.1 * exp(x2)) * 0.98) 13 5.243e+03 1.824e-04 y = max(1.8 / inv(max(x2, 0.56)), 0.21 ^ inv(x1)) * x1 16 5.243e+03 3.485e-05 y = max(0.21 ^ inv(x1), 1.9 / inv(max(x2, 0.56) / inv(x1))... ) - 0.045 17 5.242e+03 1.596e-04 y = max((x1 * 1.8) / inv(max(0.56, x2)), abs(0.21 ^ inv(1 ... / inv(x1)))) 20 5.239e+03 1.428e-04 y = max(abs(0.21 ^ inv(min(x2, 1 / inv(x1)))), 1.8) / inv(... max(0.56, x2) / inv(x1)) 22 5.239e+03 5.727e-05 y = max(abs(0.21 ^ inv(min(1 / inv(x1), x2))), 1.9 / inv(m... ax(x2, 0.56) / inv(x1))) + -0.047 29 5.239e+03 5.048e-10 y = max(abs(0.21 ^ inv(min(1 / inv(x1), x2))), 1.9 / max(-... 0.059 / abs(abs(x2)), abs(inv(max(x2, 0.56) / inv(x1))))) ... - 0.047 ─────────────────────────────────────────────────────────────────────────────────────────────────── ════════════════════════════════════════════════════════════════════════════════════════════════════ Press 'q' and then <enter> to stop execution early. Expressions evaluated per second: 2.020e+04 Progress: 1030 / 1550 total iterations (66.452%) ════════════════════════════════════════════════════════════════════════════════════════════════════ ─────────────────────────────────────────────────────────────────────────────────────────────────── Complexity Loss Score Equation 1 5.319e+03 0.000e+00 y = x1 3 5.292e+03 2.553e-03 y = x1 / 0.85 4 5.251e+03 7.698e-03 y = x1 / cos(x2) 6 5.250e+03 6.743e-05 y = x1 / cos(x2 ^ 1.2) 7 5.250e+03 1.356e-04 y = x1 * (1.9 ^ (x2 ^ 2.8)) 8 5.246e+03 6.502e-04 y = x1 / cos(cos(exp(x2) * -1.1)) 10 5.244e+03 1.720e-04 y = x1 / max(0.63, cos(cos(exp(x2) * 1.2))) 13 5.243e+03 8.488e-05 y = max(1.8 / inv(max(x2, 0.56)), 0.21 ^ inv(x1)) * x1 16 5.243e+03 3.485e-05 y = max(0.21 ^ inv(x1), 1.9 / inv(max(x2, 0.56) / inv(x1))... ) - 0.045 17 5.242e+03 1.596e-04 y = max((x1 * 1.8) / inv(max(0.56, x2)), abs(0.21 ^ inv(1 ... / inv(x1)))) 20 5.239e+03 1.428e-04 y = max(abs(0.21 ^ inv(min(x2, 1 / inv(x1)))), 1.8) / inv(... max(0.56, x2) / inv(x1)) 22 5.239e+03 5.727e-05 y = max(abs(0.21 ^ inv(min(1 / inv(x1), x2))), 1.9 / inv(m... ax(x2, 0.56) / inv(x1))) + -0.047 23 5.239e+03 3.534e-09 y = max(abs(0.21 ^ inv(min(1 / inv(x1), x2))), 1.9 / abs(i... nv(max(x2, 0.56) / inv(x1)))) - 0.047 28 5.239e+03 4.844e-06 y = (max(1.9, abs(0.21 ^ inv(min(1 / inv(x1), x2)))) / max... (1 / x1, abs(inv(abs(max(x2, 0.56) / inv(x1)))))) - 0.047 29 5.238e+03 1.777e-04 y = (max(1.9, abs(0.21 ^ inv(min(1 / inv(x1), x2)))) / max... (1.1 / abs(x1), abs(inv(abs(max(x2, 0.56) / inv(x1)))))) -... 0.052 ─────────────────────────────────────────────────────────────────────────────────────────────────── ════════════════════════════════════════════════════════════════════════════════════════════════════ Press 'q' and then <enter> to stop execution early. Expressions evaluated per second: 1.960e+04 Progress: 1108 / 1550 total iterations (71.484%) ════════════════════════════════════════════════════════════════════════════════════════════════════ ─────────────────────────────────────────────────────────────────────────────────────────────────── Complexity Loss Score Equation 1 5.319e+03 0.000e+00 y = x1 3 5.292e+03 2.553e-03 y = x1 / 0.85 4 5.251e+03 7.698e-03 y = x1 / cos(x2) 6 5.250e+03 6.743e-05 y = x1 / cos(x2 ^ 1.2) 7 5.250e+03 1.356e-04 y = x1 * (1.9 ^ (x2 ^ 2.8)) 8 5.246e+03 6.502e-04 y = x1 / cos(cos(exp(x2) * -1.1)) 10 5.244e+03 1.720e-04 y = x1 / max(0.63, cos(cos(exp(x2) * 1.2))) 13 5.243e+03 8.488e-05 y = max(1.8 / inv(max(x2, 0.56)), 0.21 ^ inv(x1)) * x1 16 5.243e+03 3.485e-05 y = max(0.21 ^ inv(x1), 1.9 / inv(max(x2, 0.56) / inv(x1))... ) - 0.045 17 5.242e+03 1.596e-04 y = max((x1 * 1.8) / inv(max(0.56, x2)), abs(0.21 ^ inv(1 ... / inv(x1)))) 18 5.238e+03 6.349e-04 y = x1 / cos(max(max((x2 + -0.63) / (x1 * x2), -1.9), x2 *... x2) / x2) 29 5.238e+03 9.997e-06 y = (max(1.9, abs(0.21 ^ inv(min(1 / inv(x1), x2)))) / max... (1.1 / abs(x1), abs(inv(abs(max(x2, 0.56) / inv(x1)))))) -... 0.052 ─────────────────────────────────────────────────────────────────────────────────────────────────── ════════════════════════════════════════════════════════════════════════════════════════════════════ Press 'q' and then <enter> to stop execution early. Expressions evaluated per second: 1.830e+04 Progress: 1202 / 1550 total iterations (77.548%) ════════════════════════════════════════════════════════════════════════════════════════════════════ ─────────────────────────────────────────────────────────────────────────────────────────────────── Complexity Loss Score Equation 1 5.319e+03 0.000e+00 y = x1 3 5.292e+03 2.553e-03 y = x1 / 0.85 4 5.251e+03 7.698e-03 y = x1 / cos(x2) 6 5.250e+03 8.384e-05 y = x1 / cos(min(0.91, x2)) 7 5.250e+03 1.028e-04 y = x1 * (1.9 ^ (x2 ^ 2.8)) 8 5.246e+03 6.502e-04 y = x1 / cos(cos(exp(x2) * -1.1)) 10 5.244e+03 1.728e-04 y = x1 / max(0.63, cos(cos(exp(x2) * 1.2))) 12 5.244e+03 4.112e-05 y = (x1 / max(0.62, cos(cos(exp(x2) * 1.2)))) - 0.026 13 5.243e+03 1.709e-04 y = max(1.8 / inv(max(x2, 0.56)), 0.21 ^ inv(x1)) * x1 16 5.243e+03 3.485e-05 y = (max(0.21 ^ inv(x1), 1.9) / inv(max(0.56, x2) / inv(x1... ))) - 0.045 17 5.242e+03 1.596e-04 y = max((x1 * 1.8) / inv(max(0.56, x2)), abs(0.21 ^ inv(1 ... / inv(x1)))) 18 5.238e+03 6.349e-04 y = x1 / cos(max(max((x2 + -0.63) / (x1 * x2), -1.9), x2 *... x2) / x2) 28 5.238e+03 1.100e-05 y = (max(1.9, abs(0.21 ^ inv(min(1 / inv(x1), x2)))) / max... (1.1 / x1, abs(abs(inv(max(0.56, x2) / inv(x1)))))) - 0.05... 2 ─────────────────────────────────────────────────────────────────────────────────────────────────── ════════════════════════════════════════════════════════════════════════════════════════════════════ Press 'q' and then <enter> to stop execution early. Expressions evaluated per second: 1.780e+04 Progress: 1293 / 1550 total iterations (83.419%) ════════════════════════════════════════════════════════════════════════════════════════════════════ ─────────────────────────────────────────────────────────────────────────────────────────────────── Complexity Loss Score Equation 1 5.319e+03 0.000e+00 y = x1 3 5.292e+03 2.553e-03 y = x1 / 0.85 4 5.251e+03 7.698e-03 y = x1 / cos(x2) 6 5.250e+03 8.384e-05 y = x1 / cos(min(0.91, x2)) 7 5.250e+03 1.028e-04 y = x1 * (1.9 ^ (x2 ^ 2.8)) 8 5.246e+03 6.502e-04 y = x1 / cos(cos(exp(x2) * -1.1)) 10 5.244e+03 1.728e-04 y = x1 / max(0.63, cos(cos(exp(x2) * 1.2))) 12 5.244e+03 4.112e-05 y = (x1 / max(0.62, cos(cos(exp(x2) * 1.2)))) - 0.026 13 5.243e+03 1.709e-04 y = max(1.8 / inv(max(x2, 0.56)), 0.21 ^ inv(x1)) * x1 16 5.243e+03 3.485e-05 y = (max(0.21 ^ inv(x1), 1.9) / inv(max(0.56, x2) / inv(x1... ))) - 0.045 17 5.242e+03 1.596e-04 y = max((x1 * 1.8) / inv(max(0.56, x2)), abs(0.21 ^ inv(1 ... / inv(x1)))) 18 5.238e+03 6.349e-04 y = x1 / cos(max(max((x2 + -0.63) / (x1 * x2), -1.9), x2 *... x2) / x2) 25 5.238e+03 1.571e-05 y = (max(1.9, abs(0.21 ^ inv(min(x2, 1 / inv(x1))))) / max... (1.1 / x1, inv(x1) / max(0.56, x2))) - 0.052 28 5.237e+03 2.305e-05 y = (max(1.9, abs((0.21 ^ inv(min(x2, 1 / inv(x1)))) / x2)... ) / max(1.1 / x1, inv(x1) / abs(max(0.56, x2)))) - 0.052 ─────────────────────────────────────────────────────────────────────────────────────────────────── ════════════════════════════════════════════════════════════════════════════════════════════════════ Press 'q' and then <enter> to stop execution early. Expressions evaluated per second: 1.600e+04 Progress: 1354 / 1550 total iterations (87.355%) ════════════════════════════════════════════════════════════════════════════════════════════════════ ─────────────────────────────────────────────────────────────────────────────────────────────────── Complexity Loss Score Equation 1 5.319e+03 0.000e+00 y = x1 3 5.292e+03 2.553e-03 y = x1 / 0.85 4 5.251e+03 7.698e-03 y = x1 / cos(x2) 6 5.250e+03 8.384e-05 y = x1 / cos(min(0.91, x2)) 7 5.250e+03 1.028e-04 y = x1 * (1.9 ^ (x2 ^ 2.8)) 8 5.246e+03 6.502e-04 y = x1 / cos(cos(exp(x2) * -1.1)) 10 5.244e+03 1.728e-04 y = x1 / max(0.63, cos(cos(exp(x2) * 1.2))) 12 5.244e+03 4.112e-05 y = (x1 / max(0.62, cos(cos(exp(x2) * 1.2)))) - 0.026 13 5.243e+03 1.709e-04 y = max(1.8 / inv(max(x2, 0.56)), 0.21 ^ inv(x1)) * x1 16 5.243e+03 3.485e-05 y = (max(0.21 ^ inv(x1), 1.9) / inv(max(0.56, x2) / inv(x1... ))) - 0.045 17 5.242e+03 1.596e-04 y = max((x1 * 1.8) / inv(max(0.56, x2)), abs(0.21 ^ inv(1 ... / inv(x1)))) 18 5.238e+03 6.349e-04 y = x1 / cos(max(max((x2 + -0.63) / (x1 * x2), -1.9), x2 *... x2) / x2) 25 5.238e+03 1.571e-05 y = (max(1.9, abs(0.21 ^ inv(min(x2, 1 / inv(x1))))) / max... (1.1 / x1, inv(x1) / max(0.56, x2))) - 0.052 28 5.237e+03 2.305e-05 y = (max(1.9, abs((0.21 ^ inv(min(x2, 1 / inv(x1)))) / x2)... ) / max(1.1 / x1, inv(x1) / abs(max(0.56, x2)))) - 0.052 ─────────────────────────────────────────────────────────────────────────────────────────────────── ════════════════════════════════════════════════════════════════════════════════════════════════════ Press 'q' and then <enter> to stop execution early. Expressions evaluated per second: 1.410e+04 Progress: 1414 / 1550 total iterations (91.226%) ════════════════════════════════════════════════════════════════════════════════════════════════════ ─────────────────────────────────────────────────────────────────────────────────────────────────── Complexity Loss Score Equation 1 5.319e+03 0.000e+00 y = x1 3 5.292e+03 2.553e-03 y = x1 / 0.85 4 5.251e+03 7.698e-03 y = x1 / cos(x2) 6 5.250e+03 8.384e-05 y = x1 / cos(min(0.91, x2)) 7 5.250e+03 1.028e-04 y = x1 * (1.9 ^ (x2 ^ 2.8)) 8 5.246e+03 6.502e-04 y = x1 / cos(cos(exp(x2) * -1.1)) 10 5.244e+03 1.728e-04 y = x1 / max(0.63, cos(cos(exp(x2) * 1.2))) 12 5.244e+03 4.112e-05 y = (x1 / max(0.62, cos(cos(exp(x2) * 1.2)))) - 0.026 13 5.243e+03 1.709e-04 y = max(1.8 / inv(max(x2, 0.56)), 0.21 ^ inv(x1)) * x1 16 5.243e+03 3.485e-05 y = (max(0.21 ^ inv(x1), 1.9) / inv(max(0.56, x2) / inv(x1... ))) - 0.045 17 5.242e+03 1.596e-04 y = max((x1 * 1.8) / inv(max(0.56, x2)), abs(0.21 ^ inv(1 ... / inv(x1)))) 18 5.238e+03 6.349e-04 y = x1 / cos(max(max((x2 + -0.63) / (x1 * x2), -1.9), x2 *... x2) / x2) 25 5.238e+03 1.571e-05 y = (max(1.9, abs(0.21 ^ inv(min(x2, 1 / inv(x1))))) / max... (1.1 / x1, inv(x1) / max(0.56, x2))) - 0.052 28 5.237e+03 2.305e-05 y = (max(1.9, abs((0.21 ^ inv(min(x2, 1 / inv(x1)))) / x2)... ) / max(1.1 / x1, inv(x1) / abs(max(0.56, x2)))) - 0.052 ─────────────────────────────────────────────────────────────────────────────────────────────────── ════════════════════════════════════════════════════════════════════════════════════════════════════ Press 'q' and then <enter> to stop execution early. Expressions evaluated per second: 1.400e+04 Progress: 1498 / 1550 total iterations (96.645%) ════════════════════════════════════════════════════════════════════════════════════════════════════ ─────────────────────────────────────────────────────────────────────────────────────────────────── Complexity Loss Score Equation 1 5.319e+03 0.000e+00 y = x1 3 5.292e+03 2.553e-03 y = x1 / 0.85 4 5.251e+03 7.698e-03 y = x1 / cos(x2) 6 5.250e+03 8.384e-05 y = x1 / cos(min(0.91, x2)) 7 5.250e+03 1.028e-04 y = x1 * (1.9 ^ (x2 ^ 2.8)) 8 5.246e+03 6.502e-04 y = x1 / cos(cos(exp(x2) * -1.1)) 10 5.243e+03 2.855e-04 y = x1 / max(0.62, cos(cos(exp(x2 * 1.2)))) 13 5.243e+03 9.235e-06 y = max(1.8 / inv(max(x2, 0.56)), 0.21 ^ inv(x1)) * x1 16 5.243e+03 3.485e-05 y = (max(0.21 ^ inv(x1), 1.9) / inv(max(0.56, x2) / inv(x1... ))) - 0.045 17 5.242e+03 1.596e-04 y = max((x1 * 1.8) / inv(max(0.56, x2)), abs(0.21 ^ inv(1 ... / inv(x1)))) 18 5.238e+03 6.349e-04 y = x1 / cos(max(max((x2 + -0.63) / (x1 * x2), -1.9), x2 *... x2) / x2) 25 5.238e+03 1.571e-05 y = (max(1.9, abs(0.21 ^ inv(min(x2, 1 / inv(x1))))) / max... (1.1 / x1, inv(x1) / max(0.56, x2))) - 0.052 28 5.237e+03 2.305e-05 y = (max(1.9, abs((0.21 ^ inv(min(x2, 1 / inv(x1)))) / x2)... ) / max(1.1 / x1, inv(x1) / abs(max(0.56, x2)))) - 0.052 ─────────────────────────────────────────────────────────────────────────────────────────────────── ════════════════════════════════════════════════════════════════════════════════════════════════════ Press 'q' and then <enter> to stop execution early. ─────────────────────────────────────────────────────────────────────────────────────────────────── Complexity Loss Score Equation 1 5.319e+03 0.000e+00 y = x1 3 5.292e+03 2.553e-03 y = x1 / 0.85 4 5.251e+03 7.698e-03 y = x1 / cos(x2) 6 5.250e+03 8.384e-05 y = x1 / cos(min(0.91, x2)) 7 5.250e+03 1.028e-04 y = x1 * (1.9 ^ (x2 ^ 2.8)) 8 5.246e+03 6.502e-04 y = x1 / cos(cos(exp(x2) * -1.1)) 10 5.243e+03 2.855e-04 y = x1 / max(0.62, cos(cos(exp(x2 * 1.2)))) 13 5.243e+03 9.235e-06 y = max(1.8 / inv(max(x2, 0.56)), 0.21 ^ inv(x1)) * x1 16 5.238e+03 2.997e-04 y = x1 / cos(max((x2 + -0.63) / (x1 * x2), x2 * x2) / x2) 25 5.238e+03 1.222e-05 y = (max(1.9, abs(0.21 ^ inv(min(x2, 1 / inv(x1))))) / max... (1.1 / x1, inv(x1) / max(0.56, x2))) - 0.052 28 5.237e+03 2.305e-05 y = (max(1.9, abs((0.21 ^ inv(min(x2, 1 / inv(x1)))) / x2)... ) / max(1.1 / x1, inv(x1) / abs(max(0.56, x2)))) - 0.052 ───────────────────────────────────────────────────────────────────────────────────────────────────
[ Info: Final population:
trained Machine; caches model-specific representations of data
model: SRRegressor(defaults = nothing, …)
args:
1: Source @394 ⏎ ScientificTypesBase.Table{AbstractVector{ScientificTypesBase.Continuous}}
2: Source @915 ⏎ AbstractVector{ScientificTypesBase.Continuous}
# Organise results into dictionary
report_mach = report(mach);
report_dict = Dict(pairs(report_mach));
delete!(report_dict, :best_idx);
# delete!(report_dict, :equations);
# Organise into dataframe for easy inspection
report_df = DataFrame(report_dict)
report_df[!, :score_rank] = competerank(-report_df.scores)
report_df
# Best result (tradeoff between simplicity and fit) has score_rank=1
| Row | complexities | equation_strings | equations | losses | scores | score_rank |
|---|---|---|---|---|---|---|
| Int64 | String | Expressi… | Float64 | Float64 | Int64 | |
| 1 | 1 | x1 | x1 | 5318.77 | 0.0 | 11 |
| 2 | 3 | x1 / 0.8521755677455748 | x1 / 0.8521755677455748 | 5291.67 | 0.00255343 | 2 |
| 3 | 4 | x1 / cos(x2) | x1 / cos(x2) | 5251.1 | 0.00769773 | 1 |
| 4 | 6 | x1 / cos(min(0.9112686636689056, x2)) | x1 / cos(min(0.9112686636689056, x2)) | 5250.22 | 8.38396e-5 | 7 |
| 5 | 7 | x1 * (1.8988403315380984 ^ (x2 ^ 2.77888733432393)) | x1 * (1.8988403315380984 ^ (x2 ^ 2.77888733432393)) | 5249.68 | 0.000102823 | 6 |
| 6 | 8 | x1 / cos(cos(exp(x2) * -1.1488815062179523)) | x1 / cos(cos(exp(x2) * -1.1488815062179523)) | 5246.26 | 0.000650229 | 3 |
| 7 | 10 | x1 / max(0.6160039287448917, cos(cos(exp(x2 * 1.2344725487795842)))) | x1 / max(0.6160039287448917, cos(cos(exp(x2 * 1.2344725487795842)))) | 5243.27 | 0.000285514 | 5 |
| 8 | 13 | max(1.8304478156817614 / inv(max(x2, 0.5617797229246599)), 0.206112152090115 ^ inv(x1)) * x1 | max(1.8304478156817614 / inv(max(x2, 0.5617797229246599)), 0.206112152090115 ^ inv(x1)) * x1 | 5243.12 | 9.23475e-6 | 10 |
| 9 | 16 | x1 / cos(max((x2 + -0.6335780239890791) / (x1 * x2), x2 * x2) / x2) | x1 / cos(max((x2 + -0.6335780239890791) / (x1 * x2), x2 * x2) / x2) | 5238.41 | 0.000299694 | 4 |
| 10 | 25 | (max(1.9211117731394747, abs(0.206112152090115 ^ inv(min(x2, 1.0459752252846917 / inv(x1))))) / max(1.1111878238453374 / x1, inv(x1) / max(0.5563075635085974, x2))) - 0.05230370379970683 | (max(1.9211117731394747, abs(0.206112152090115 ^ inv(min(x2, 1.0459752252846917 / inv(x1))))) / max(1.1111878238453374 / x1, inv(x1) / max(0.5563075635085974, x2))) - 0.05230370379970683 | 5237.84 | 1.22191e-5 | 9 |
| 11 | 28 | (max(1.9211117731394747, abs((0.206112152090115 ^ inv(min(x2, 1.0459752252846917 / inv(x1)))) / x2)) / max(1.1111878238453374 / x1, inv(x1) / abs(max(0.5563075635085974, x2)))) - 0.05230370379970683 | (max(1.9211117731394747, abs((0.206112152090115 ^ inv(min(x2, 1.0459752252846917 / inv(x1)))) / x2)) / max(1.1111878238453374 / x1, inv(x1) / abs(max(0.5563075635085974, x2)))) - 0.05230370379970683 | 5237.47 | 2.30523e-5 | 8 |
# Identify best expression
# best_expression = report_mach[2][report_mach[1]] # Best expression according to report_mach. Sometimes produces unexpected results.
best_expression = report_mach[2][findfirst(report_df.score_rank .== 1)] # Best expression according to score_rank
best_expression_eqn = node_to_symbolic(best_expression)
best_expression_eqn_simp = simplify(best_expression_eqn)
# display latext output
display(best_expression_eqn_simp)
# print text
println(best_expression_eqn_simp)
x1 / cos(x2)
# Apply link function to expression
@variables η
sym_expr = linkinv(LinkFunctionChoice, η)
best_exp_wLink = substitute(sym_expr, Dict(η => best_expression_eqn_simp))
best_exp_wLink = safe_simplify(best_exp_wLink)
display(best_exp_wLink)
println(best_exp_wLink)
1 / (1 + exp(-1 * (x1 / cos(x2))))
Visualise Fit¶
# Fitted Mean
# Load symbolic equation as a julia function that can take arguments
best_expression_jl = build_function(best_exp_wLink, :x1, :x2, expression=Val{false});
# Actual Mean
actual_mean(x1::T, x2::T) where {T <: Real} = logistic(x1*x2^3.2 + x1)
actual_mean (generic function with 1 method)
# 1. Plot Fitted (Red)
Plots.surface(
0:0.1:2, 0:0.1:1, best_expression_jl,
color = :deepskyblue3,
alpha = 0.7,
zlims = (0,1),
xlabel = "x1", ylabel = "x2", zlabel = "Mean",
size = (1000, 600),
colorbar = false,
label = "", # Hide the default surface label
title = "Actual vs Fitted Mean"
)
# 2. Plot Actual (Blue)
Plots.surface!(
0:0.1:2, 0:0.1:1, actual_mean,
color = :firebrick2,
alpha = 0.7,
label = "" # Hide the default surface label
)
# 3. Add "fake" lines to force the legend
plot!([0], [0], [0], color = :deepskyblue3, lw = 5, label = "Fitted Mean")
plot!([0], [0], [0], color = :firebrick2, lw = 5, label = "Actual Mean")
# 3. Explicitly tell Plots where to put it
plot!(legend = :right)
Commentary On Fitted Model¶
At first glance, the fitted equation of logistic(x1 / cos(x2)) appears very different to logistic(x1x2^{3.2} + x1). But when plotted, they are very close over our domain, visually indistinguishable.
Gamma Regression¶
Generate Mock Data¶
In this step we generate Mock Data, with a predetermined distribution. We will then see if Symbolic Regression is able to recover the equation just using data alone.
$Y|x \sim Gamma(\alpha, \theta) $ where $ E(Y|x) = x_1x_2^{3.2} + x_1 $
With $50 \le x_1 \le 150$ and $ 0 \le x_2 \le 30 $
Scale parameter (θ) of the Gamma distribution is set so that standard deviation = 0.5 $*E(Y|x)$. A high standard deviation is used in the hopes to assess model performance under a high-noise environment.
$\text{E}(Y|x) = \alpha\theta \text{ and } \text{Var}(Y|x) = \alpha\theta^2 = (0.5\text{E}(Y|x))^2$
$∴ α = 1/0.25 = 4 \text{ and } θ = 0.25\text{E}(Y|x)=0.25(x_1x_2^{3.2} + x_1)$
obs=5000
# Generate random X values
Random.seed!(my_seed)
mockdata = DataFrame(
x1 = rand(Uniform(50,150), obs),
x2 = rand(Uniform(1,30), obs)
)
# What is standard deviation as a percent of mean
# Higher value = more noise
std_over_mean = 0.5
# Generate observations from Gamma distribution, with mean a function of the X values, like a GLM
transform!(mockdata, [:x1, :x2] => ((x1, x2) -> x1.*(x2.^3.2) + x1) => :mean)
transform!(mockdata, :mean => ((mean) -> rand.(Gamma.(inv(std_over_mean^2), std_over_mean^2 .* mean))) => :Y_obs)
first(mockdata, 10)
| Row | x1 | x2 | mean | Y_obs |
|---|---|---|---|---|
| Float64 | Float64 | Float64 | Float64 | |
| 1 | 107.663 | 1.1221 | 263.322 | 134.282 |
| 2 | 133.26 | 20.6327 | 2.14441e6 | 1.50425e6 |
| 3 | 99.2985 | 13.9199 | 4.536e5 | 758186.0 |
| 4 | 139.318 | 14.8186 | 777440.0 | 1.09076e6 |
| 5 | 137.125 | 20.0026 | 1.99811e6 | 3.01462e6 |
| 6 | 136.781 | 27.8127 | 5.72286e6 | 2.61695e6 |
| 7 | 127.501 | 20.4116 | 1.98222e6 | 1.34173e6 |
| 8 | 110.928 | 25.8438 | 3.66939e6 | 3.75285e6 |
| 9 | 57.084 | 8.71946 | 58412.4 | 92410.2 |
| 10 | 117.425 | 16.0176 | 8.4049e5 | 7.41832e5 |
# Subset
X = mockdata[:, [:x1, :x2]];
y = mockdata[:, :Y_obs];
# 1. Plot Observed Data containing noise
Plots.scatter(
mockdata.x1,
mockdata.x2,
mockdata.Y_obs,
label = "Observations with noise",
markerstrokewidth = 0,
markersize = 1, # smaller dots
alpha = 0.9, # more transparency
color = :deepskyblue3, # clearer blue than default
xlabel = "x1",
ylabel = "x2",
zlabel = "Obs / Mean",
legend = :bottomright,
title = "Actual Mean vs Observations",
size = (1000,600)
)
# 2. Plot True Underlying Mean
Plots.scatter!(
mockdata.x1,
mockdata.x2,
mockdata.mean,
label = "True underlying mean",
markerstrokewidth = 0,
markersize = 1, # slightly larger for emphasis
alpha = 0.9, # solid but not harsh
color = :firebrick2 # strong red, not neon
)
# plot!(
# gridalpha = 0.12,
# camera = (30, 25)
# )
Fit Model With Custom Loss Function¶
# Select Family and Link function (optional - by default identity link), and Weights
FamilyChoice = Gamma()
LinkFunctionChoice = LogLink()
weights_vec = nothing
model = SRRegressor(
binary_operators=[+,*,-,/,^, max, min],
unary_operators=[abs, inv, log, exp, sin, cos],
niterations=100,
should_simplify = true,
should_optimize_constants = true,
print_precision=2,
seed=my_seed,
turbo = true,
save_to_file = false,
loss_function=custom_likelihood_based_obj(FamilyChoice, LinkFunctionChoice, weights_vec),
progress = false);
# Train model
mach = machine(model, X, y)
fit!(mach);
[ Info: Training machine(SRRegressor(defaults = nothing, …), …). [ Info: Started!
Expressions evaluated per second: 2.960e+00 Progress: 1 / 3100 total iterations (0.032%) ════════════════════════════════════════════════════════════════════════════════════════════════════ ─────────────────────────────────────────────────────────────────────────────────────────────────── Complexity Loss Score Equation 4 3.038e+05 0.000e+00 y = abs(exp(log(x2))) 5 1.631e+05 6.218e-01 y = min(x2, 1.3) * x2 6 NaN -0.000e+00 y = abs(x2 + (x1 * x1)) 8 8.872e+04 1.248e+01 y = abs(((x1 * 0.23) ^ 0.97) - -0.81) 16 5.246e+04 6.569e-02 y = abs((((x2 - (0.72 / (-0.33 ^ (x1 / x1)))) + 1.3) ^ 0.9... 7) - -0.81) 18 2.973e+03 1.435e+00 y = abs((min(x1 * 0.32, (x2 - (-0.57 ^ (x1 / x1))) + -0.29... ) ^ 0.65) - -7.2) 19 2.844e+03 4.432e-02 y = abs(abs((min((x2 - (-0.033 ^ (x1 / x1))) + -0.83, x1 *... 0.6) ^ 0.64) - -7.6)) 21 NaN -0.000e+00 y = max(abs(min(x1 * (x2 + -1.3), abs(1.3 * ((x2 * ((x2 * ... 1) - -0.28)) - -0.28)))), -0.61) ─────────────────────────────────────────────────────────────────────────────────────────────────── ════════════════════════════════════════════════════════════════════════════════════════════════════ Press 'q' and then <enter> to stop execution early. Expressions evaluated per second: 1.230e+04 Progress: 91 / 3100 total iterations (2.935%) ════════════════════════════════════════════════════════════════════════════════════════════════════ ─────────────────────────────────────────────────────────────────────────────────────────────────── Complexity Loss Score Equation 1 1.569e+04 0.000e+00 y = 14 5 7.123e+03 1.975e-01 y = (x2 + 20) / 2.7 6 NaN -0.000e+00 y = abs(x2 + (x1 * x1)) 7 1.924e+03 2.911e+01 y = ((x2 ^ 0.25) / 0.14) + -0.76 11 1.887e+03 4.849e-03 y = ((((x2 ^ 1.1) ^ 0.22) - 0.36) / 0.12) + 0.94 15 1.732e+03 2.139e-02 y = ((x2 ^ -0.63) * (((x2 / 0.27) + min(9.9, x2)) + -0.84)... ) + 1.4 18 1.669e+03 1.237e-02 y = (x2 ^ -0.8) * (((max(0.16, x2) / 0.14) + -6.6) + ((log... (x1) / 1.5) + x2)) 21 NaN -0.000e+00 y = max(abs(min(x1 * (x2 + -1.3), abs(1.3 * ((x2 * ((x2 * ... 1) - -0.28)) - -0.28)))), -0.61) 23 1.575e+03 1.456e+01 y = (abs(log(x1 - x2)) + (((x2 / 0.24) + max(min(10, x2) +... -1.3, -0.29)) + -2.7)) * (x2 ^ -0.64) ─────────────────────────────────────────────────────────────────────────────────────────────────── ════════════════════════════════════════════════════════════════════════════════════════════════════ Press 'q' and then <enter> to stop execution early. Expressions evaluated per second: 1.160e+04 Progress: 140 / 3100 total iterations (4.516%) ════════════════════════════════════════════════════════════════════════════════════════════════════ ─────────────────────────────────────────────────────────────────────────────────────────────────── Complexity Loss Score Equation 1 1.569e+04 0.000e+00 y = 14 5 4.169e+03 3.314e-01 y = (x2 ^ 0.25) / 0.14 6 NaN -0.000e+00 y = abs(x2 + (x1 * x1)) 7 1.924e+03 2.911e+01 y = ((x2 ^ 0.25) / 0.14) + -0.76 8 1.530e+03 2.291e-01 y = (x2 ^ 0.27) / (inv(x1) + 0.15) 21 NaN -0.000e+00 y = max(abs(min(x1 * (x2 + -1.3), abs(1.3 * ((x2 * ((x2 * ... 1) - -0.28)) - -0.28)))), -0.61) 25 1.509e+03 7.278e+00 y = (x2 ^ -0.78) * (((log(x1 / 0.98) + -11) + ((log(x1) / ... 1.2) + x2)) + ((max(1.2, x2) / 0.15) - 0.19)) 26 1.401e+03 7.417e-02 y = log((x1 / (((x1 + x1) / 2.7) / 2.7)) + abs(abs((x2 * x... 2) * (((x1 + x1) / 5.6) / -1.7)))) / 0.64 ─────────────────────────────────────────────────────────────────────────────────────────────────── ════════════════════════════════════════════════════════════════════════════════════════════════════ Press 'q' and then <enter> to stop execution early. Expressions evaluated per second: 1.300e+04 Progress: 197 / 3100 total iterations (6.355%) ════════════════════════════════════════════════════════════════════════════════════════════════════ ─────────────────────────────────────────────────────────────────────────────────────────────────── Complexity Loss Score Equation 1 1.569e+04 0.000e+00 y = 14 4 1.392e+04 4.009e-02 y = min(14, exp(x2)) 5 3.983e+03 1.251e+00 y = (x2 ^ 0.18) / 0.12 6 NaN -0.000e+00 y = abs(x2 + (x1 * x1)) 7 1.877e+03 2.911e+01 y = ((x2 ^ 0.23) / 0.12) - 2.1 8 1.530e+03 2.044e-01 y = (x2 ^ 0.27) / (inv(x1) + 0.15) 10 1.529e+03 2.945e-04 y = ((x2 ^ 0.27) / (inv(x1) + 0.14)) * 0.95 16 1.407e+03 1.388e-02 y = log(abs((((x1 + x1) / 5.6) / abs(-1.7)) * (x2 * x2))) ... / 0.64 18 1.407e+03 -0.000e+00 y = abs(abs(log(abs(x2 * abs(((x2 * (x1 + x1)) / 5.6) / -... 1.7)))) / 0.64) 21 NaN -0.000e+00 y = max(abs(min(x1 * (x2 + -1.3), abs(1.3 * ((x2 * ((x2 * ... 1) - -0.28)) - -0.28)))), -0.61) 22 1.400e+03 2.911e+01 y = log(abs(abs(((x2 * ((x2 * (x1 + x1)) / 5.6)) / abs(-1.... 7)) + abs(x2 * 1.3)))) / 0.64 23 1.400e+03 3.784e-04 y = log(abs((x1 + x1) * (((x2 / 5.6) / -1.7) * x2)) + ((x2... * x2) * abs(1.4))) / abs(0.64) 24 1.245e+03 1.174e-01 y = abs(log(min(x1, 3.3) + abs(x2 * ((x2 * (((x2 * min(x1,... x1)) + x1) / 1.9)) / -1.1))) / 0.91) ─────────────────────────────────────────────────────────────────────────────────────────────────── ════════════════════════════════════════════════════════════════════════════════════════════════════ Press 'q' and then <enter> to stop execution early. Expressions evaluated per second: 1.420e+04 Progress: 268 / 3100 total iterations (8.645%) ════════════════════════════════════════════════════════════════════════════════════════════════════ ─────────────────────────────────────────────────────────────────────────────────────────────────── Complexity Loss Score Equation 1 1.569e+04 0.000e+00 y = 14 4 1.392e+04 4.009e-02 y = min(14, exp(x2)) 5 1.953e+03 1.964e+00 y = (x2 ^ 0.27) / 0.16 6 NaN -0.000e+00 y = abs(x2 + (x1 * x1)) 7 1.877e+03 2.911e+01 y = ((x2 ^ 0.23) / 0.12) - 2.1 8 1.530e+03 2.044e-01 y = (x2 ^ 0.27) / (inv(x1) + 0.15) 10 1.529e+03 2.947e-04 y = (x2 ^ 0.27) / ((inv(x1) * 1) + 0.15) 11 1.405e+03 8.491e-02 y = abs(log(x2 * (x2 * (x1 / 4.3))) / 0.64) 12 1.287e+03 8.748e-02 y = log((x2 + x1) * ((x2 / 3.6) * x2)) / 0.67 14 1.249e+03 1.514e-02 y = log(((x2 * (x2 * 1.1)) / 7.9) * (x1 + 49)) / 0.64 15 1.239e+03 7.419e-03 y = log((x2 * abs(((x1 + 48) * x2) / 8.6)) + 7.7) / 0.62 21 NaN -0.000e+00 y = max(abs(min(x1 * (x2 + -1.3), abs(1.3 * ((x2 * ((x2 * ... 1) - -0.28)) - -0.28)))), -0.61) ─────────────────────────────────────────────────────────────────────────────────────────────────── ════════════════════════════════════════════════════════════════════════════════════════════════════ Press 'q' and then <enter> to stop execution early. Expressions evaluated per second: 1.600e+04 Progress: 326 / 3100 total iterations (10.516%) ════════════════════════════════════════════════════════════════════════════════════════════════════ ─────────────────────────────────────────────────────────────────────────────────────────────────── Complexity Loss Score Equation 1 1.569e+04 0.000e+00 y = 14 4 1.392e+04 4.009e-02 y = min(14, exp(x2)) 5 1.953e+03 1.964e+00 y = (x2 ^ 0.27) / 0.16 6 NaN -0.000e+00 y = abs(x2 + (x1 * x1)) 7 1.877e+03 2.911e+01 y = ((x2 ^ 0.23) / 0.12) - 2.1 8 1.530e+03 2.044e-01 y = (x2 ^ 0.27) / (inv(x1) + 0.15) 10 1.405e+03 4.275e-02 y = log(x2 * ((x1 * x2) / 4.3)) / 0.64 12 1.287e+03 4.374e-02 y = log((x2 + x1) * ((x2 / 3.6) * x2)) / 0.67 14 1.249e+03 1.514e-02 y = log(((x2 * (x2 * 1.1)) / 7.9) * (x1 + 49)) / 0.64 15 1.239e+03 7.419e-03 y = log((x2 * abs(((x1 + 48) * x2) / 8.6)) + 7.7) / 0.62 21 NaN -0.000e+00 y = max(abs(min(x1 * (x2 + -1.3), abs(1.3 * ((x2 * ((x2 * ... 1) - -0.28)) - -0.28)))), -0.61) ─────────────────────────────────────────────────────────────────────────────────────────────────── ════════════════════════════════════════════════════════════════════════════════════════════════════ Press 'q' and then <enter> to stop execution early. Expressions evaluated per second: 1.530e+04 Progress: 393 / 3100 total iterations (12.677%) ════════════════════════════════════════════════════════════════════════════════════════════════════ ─────────────────────────────────────────────────────────────────────────────────────────────────── Complexity Loss Score Equation 1 1.569e+04 0.000e+00 y = 14 4 1.392e+04 4.009e-02 y = min(14, exp(x2)) 5 1.953e+03 1.964e+00 y = (x2 ^ 0.27) / 0.16 6 NaN -0.000e+00 y = abs(x2 + (x1 * x1)) 7 1.760e+03 2.911e+01 y = ((x2 ^ 0.15) / 0.066) - 9.6 8 1.530e+03 1.403e-01 y = (x2 ^ 0.27) / (inv(x1) + 0.15) 9 1.530e+03 -0.000e+00 y = (x2 ^ 0.27) / (abs(inv(x1)) + 0.15) 10 1.405e+03 8.550e-02 y = log(x2 * ((x1 * x2) / 4.3)) / 0.64 12 1.263e+03 5.317e-02 y = log((x2 * (x1 + 48)) * (x2 / 8.6)) / 0.62 13 1.248e+03 1.185e-02 y = log(abs((x1 + 52) * (x2 * (x2 / 7.4)))) / 0.64 14 1.239e+03 7.519e-03 y = log(((x2 * ((x1 + 53) * x2)) / 8.8) + 7) / 0.62 21 NaN -0.000e+00 y = max(abs(min(x1 * (x2 + -1.3), abs(1.3 * ((x2 * ((x2 * ... 1) - -0.28)) - -0.28)))), -0.61) 26 1.238e+03 5.822e+00 y = min(log((x2 * ((x1 + 53) * (x2 / 8.8))) + 7.2) / 0.62,... (x2 * ((x1 + 48) * (x2 / 8.6))) + -8) ─────────────────────────────────────────────────────────────────────────────────────────────────── ════════════════════════════════════════════════════════════════════════════════════════════════════ Press 'q' and then <enter> to stop execution early. Expressions evaluated per second: 1.590e+04 Progress: 454 / 3100 total iterations (14.645%) ════════════════════════════════════════════════════════════════════════════════════════════════════ ─────────────────────────────────────────────────────────────────────────────────────────────────── Complexity Loss Score Equation 1 1.569e+04 0.000e+00 y = 14 4 1.392e+04 4.009e-02 y = min(14, exp(x2)) 5 1.953e+03 1.964e+00 y = (x2 ^ 0.27) / 0.16 6 NaN -0.000e+00 y = abs(x2 + (x1 * x1)) 7 1.760e+03 2.911e+01 y = ((x2 ^ 0.15) / 0.066) - 9.6 8 1.530e+03 1.403e-01 y = (x2 ^ 0.27) / (inv(x1) + 0.15) 9 1.530e+03 -0.000e+00 y = (x2 ^ 0.27) / (abs(inv(x1)) + 0.15) 10 1.405e+03 8.550e-02 y = log(x2 * ((x1 * x2) / 4.3)) / 0.64 12 1.248e+03 5.911e-02 y = log((x2 * (x2 * (x1 + 52))) / 7.4) / 0.64 14 1.239e+03 3.749e-03 y = log(((x2 * ((x1 + 53) * x2)) / 8.8) + 7) / 0.62 18 1.238e+03 1.581e-04 y = log(((x2 * (x1 + 54)) * (x2 / 9)) + ((x2 + x1) ^ 0.44)... ) / 0.62 20 1.238e+03 5.274e-05 y = log((x2 * ((x1 + 55) * (x2 / 9))) + ((x1 ^ 0.48) + -1.... 5)) / min(0.62, x1) 21 NaN -0.000e+00 y = max(abs(min(x1 * (x2 + -1.3), abs(1.3 * ((x2 * ((x2 * ... 1) - -0.28)) - -0.28)))), -0.61) ─────────────────────────────────────────────────────────────────────────────────────────────────── ════════════════════════════════════════════════════════════════════════════════════════════════════ Press 'q' and then <enter> to stop execution early. Expressions evaluated per second: 1.540e+04 Progress: 517 / 3100 total iterations (16.677%) ════════════════════════════════════════════════════════════════════════════════════════════════════ ─────────────────────────────────────────────────────────────────────────────────────────────────── Complexity Loss Score Equation 1 1.569e+04 0.000e+00 y = 14 4 9.970e+03 1.512e-01 y = log(x2) + 11 5 1.953e+03 1.630e+00 y = (x2 ^ 0.27) / 0.16 6 NaN -0.000e+00 y = abs(x2 + (x1 * x1)) 7 1.760e+03 2.911e+01 y = ((x2 ^ 0.15) / 0.066) - 9.6 8 1.530e+03 1.403e-01 y = (x2 ^ 0.27) / (inv(x1) + 0.15) 9 1.530e+03 -0.000e+00 y = (x2 ^ 0.27) / (abs(inv(x1)) + 0.15) 10 1.405e+03 8.550e-02 y = log(x2 * ((x1 * x2) / 4.3)) / 0.64 12 1.248e+03 5.911e-02 y = log((x2 * (x2 * (x1 + 52))) / 7.4) / 0.64 14 1.239e+03 3.749e-03 y = log(((x2 * ((x1 + 53) * x2)) / 8.8) + 7) / 0.62 18 1.238e+03 1.602e-04 y = min(x1, log((x1 ^ 0.44) + (((x2 * x2) / 9) * (x1 + 54)... )) / 0.62) 20 1.238e+03 4.839e-05 y = log((x2 * ((x1 + 55) * (x2 / 9))) + ((x1 ^ 0.48) + -1.... 5)) / min(0.62, x1) 21 NaN -0.000e+00 y = max(abs(min(x1 * (x2 + -1.3), abs(1.3 * ((x2 * ((x2 * ... 1) - -0.28)) - -0.28)))), -0.61) ─────────────────────────────────────────────────────────────────────────────────────────────────── ════════════════════════════════════════════════════════════════════════════════════════════════════ Press 'q' and then <enter> to stop execution early. Expressions evaluated per second: 1.420e+04 Progress: 569 / 3100 total iterations (18.355%) ════════════════════════════════════════════════════════════════════════════════════════════════════ ─────────────────────────────────────────────────────────────────────────────────────────────────── Complexity Loss Score Equation 1 1.569e+04 0.000e+00 y = 14 4 9.970e+03 1.512e-01 y = log(x2) + 11 5 1.953e+03 1.630e+00 y = (x2 ^ 0.27) / 0.16 6 NaN -0.000e+00 y = abs(x2 + (x1 * x1)) 7 1.748e+03 2.911e+01 y = ((x2 ^ 0.14) / 0.059) - 11 8 1.530e+03 1.335e-01 y = (x2 ^ 0.27) / (inv(x1) + 0.15) 10 1.405e+03 4.275e-02 y = log(x2 * ((x1 * x2) / 4.3)) / 0.64 11 1.272e+03 9.901e-02 y = log((x1 * x2) * (x2 / log(x1))) / 0.64 12 1.248e+03 1.921e-02 y = log((x2 * (x2 * (x1 + 52))) / 7.4) / 0.64 14 1.239e+03 3.749e-03 y = log(((x2 * ((x1 + 53) * x2)) / 8.8) + 7) / 0.62 18 1.238e+03 1.602e-04 y = min(x1, log((x1 ^ 0.44) + (((x2 * x2) / 9) * (x1 + 54)... )) / 0.62) 20 1.238e+03 4.839e-05 y = log((x2 * ((x1 + 55) * (x2 / 9))) + ((x1 ^ 0.48) + -1.... 5)) / min(0.62, x1) 21 NaN -0.000e+00 y = max(abs(min(x1 * (x2 + -1.3), abs(1.3 * ((x2 * ((x2 * ... 1) - -0.28)) - -0.28)))), -0.61) ─────────────────────────────────────────────────────────────────────────────────────────────────── ════════════════════════════════════════════════════════════════════════════════════════════════════ Press 'q' and then <enter> to stop execution early. Expressions evaluated per second: 1.370e+04 Progress: 623 / 3100 total iterations (20.097%) ════════════════════════════════════════════════════════════════════════════════════════════════════ ─────────────────────────────────────────────────────────────────────────────────────────────────── Complexity Loss Score Equation 1 1.569e+04 0.000e+00 y = 14 4 9.970e+03 1.512e-01 y = log(x2) + 11 5 1.953e+03 1.630e+00 y = (x2 ^ 0.27) / 0.16 6 NaN -0.000e+00 y = abs(x2 + (x1 * x1)) 7 1.729e+03 2.911e+01 y = ((x2 ^ 0.12) / 0.049) - 15 8 1.530e+03 1.221e-01 y = (x2 ^ 0.27) / (inv(x1) + 0.15) 10 1.405e+03 4.275e-02 y = log(x2 * ((x1 * x2) / 4.3)) / 0.64 11 1.272e+03 9.901e-02 y = log((x1 * x2) * (x2 / log(x1))) / 0.64 12 1.248e+03 1.921e-02 y = log((x2 * (x2 * (x1 + 52))) / 7.4) / 0.64 14 1.239e+03 3.749e-03 y = log((((x1 + 53) * (x2 * x2)) / 8.8) + 7) / 0.62 16 1.239e+03 4.046e-07 y = log(((x2 * ((x1 + 53) * min(x2, x1))) / 8.8) + 7.1) / ... 0.62 17 1.239e+03 -0.000e+00 y = log((((x1 + 53) * (min(exp(x1), x2) * x2)) / 8.8) + 7... .1) / 0.62 18 1.238e+03 6.401e-04 y = min(x1, log((x1 ^ 0.44) + (((x2 * x2) / 9) * (x1 + 54)... )) / 0.62) 20 1.238e+03 8.565e-05 y = min(log((x2 * ((x2 / 9) * (x1 + 55))) + ((x1 ^ 0.53) +... -3.6)) / 0.62, x1) 21 NaN -0.000e+00 y = max(abs(min(x1 * (x2 + -1.3), abs(1.3 * ((x2 * ((x2 * ... 1) - -0.28)) - -0.28)))), -0.61) ─────────────────────────────────────────────────────────────────────────────────────────────────── ════════════════════════════════════════════════════════════════════════════════════════════════════ Press 'q' and then <enter> to stop execution early. Expressions evaluated per second: 1.270e+04 Progress: 674 / 3100 total iterations (21.742%) ════════════════════════════════════════════════════════════════════════════════════════════════════ ─────────────────────────────────────────────────────────────────────────────────────────────────── Complexity Loss Score Equation 1 1.569e+04 0.000e+00 y = 14 4 9.970e+03 1.512e-01 y = log(x2) + 11 5 1.953e+03 1.630e+00 y = (x2 ^ 0.27) / 0.16 6 NaN -0.000e+00 y = abs(x2 + (x1 * x1)) 7 1.729e+03 2.911e+01 y = ((x2 ^ 0.12) / 0.049) - 15 8 1.530e+03 1.221e-01 y = (x2 ^ 0.27) / (inv(x1) + 0.15) 10 1.405e+03 4.275e-02 y = log(x2 * ((x1 * x2) / 4.3)) / 0.64 11 1.272e+03 9.901e-02 y = log((x1 * x2) * (x2 / log(x1))) / 0.64 12 1.248e+03 1.921e-02 y = log((x2 * (x2 * (x1 + 52))) / 7.4) / 0.64 14 1.239e+03 3.749e-03 y = log((((x1 + 53) * (x2 * x2)) / 8.8) + 7) / 0.62 16 1.239e+03 4.046e-07 y = log(((x2 * ((x1 + 53) * min(x2, x1))) / 8.8) + 7.1) / ... 0.62 17 1.239e+03 -0.000e+00 y = log((((x1 + 53) * (min(exp(x1), x2) * x2)) / 8.8) + 7... .1) / 0.62 18 1.238e+03 8.114e-04 y = log((x2 * ((x2 / 9) * (x1 + 55))) + ((x1 ^ 0.53) + -3.... 6)) / 0.62 20 1.238e+03 2.678e-06 y = min(x1, log(((x1 + 55) * ((x2 * x2) / 9)) + ((x1 ^ 0.5... 3) + -3.8))) / 0.62 21 NaN -0.000e+00 y = max(abs(min(x1 * (x2 + -1.3), abs(1.3 * ((x2 * ((x2 * ... 1) - -0.28)) - -0.28)))), -0.61) 28 1.238e+03 4.159e+00 y = (((log(x1) + 2.4) ^ (x2 / -1.9)) + (log(x1 + 5.9) + (m... ax(0.34, log(max(1.3, x2) * (x2 * x2))) + -0.32))) * 1.1 ─────────────────────────────────────────────────────────────────────────────────────────────────── ════════════════════════════════════════════════════════════════════════════════════════════════════ Press 'q' and then <enter> to stop execution early. Expressions evaluated per second: 1.280e+04 Progress: 731 / 3100 total iterations (23.581%) ════════════════════════════════════════════════════════════════════════════════════════════════════ ─────────────────────────────────────────────────────────────────────────────────────────────────── Complexity Loss Score Equation 1 1.569e+04 0.000e+00 y = 14 4 9.970e+03 1.512e-01 y = log(x2) + 11 5 1.953e+03 1.630e+00 y = (x2 ^ 0.27) / 0.16 6 NaN -0.000e+00 y = abs(x2 + (x1 * x1)) 7 1.729e+03 2.911e+01 y = ((x2 ^ 0.12) / 0.049) - 15 8 1.530e+03 1.221e-01 y = (x2 ^ 0.27) / (inv(x1) + 0.15) 10 1.405e+03 4.275e-02 y = log(x2 * ((x1 * x2) / 4.3)) / 0.64 11 1.272e+03 9.901e-02 y = log((x1 * x2) * (x2 / log(x1))) / 0.64 12 1.248e+03 1.921e-02 y = log((x2 * x2) * ((x1 + 52) / 7.4)) / 0.64 14 1.239e+03 3.749e-03 y = log((((x1 + 53) * (x2 * x2)) / 8.8) + 7) / 0.62 16 1.239e+03 4.046e-07 y = log(((x2 * ((x1 + 53) * min(x2, x1))) / 8.8) + 7.1) / ... 0.62 17 1.239e+03 -0.000e+00 y = log((((x1 + 53) * (min(exp(x1), x2) * x2)) / 8.8) + 7... .1) / 0.62 18 1.238e+03 8.168e-04 y = log(-3.8 + ((x1 ^ 0.53) + (((x1 + 55) * x2) * (x2 / 9)... ))) / 0.62 21 NaN -0.000e+00 y = max(abs(min(x1 * (x2 + -1.3), abs(1.3 * ((x2 * ((x2 * ... 1) - -0.28)) - -0.28)))), -0.61) 26 1.238e+03 5.822e+00 y = log(((x1 ^ 0.53) + ((x1 + 55) * ((x2 * x2) / 9))) + -3... .9) / min(0.62, (x1 * 0.56) / max(x2, -7.5e-05)) 28 1.238e+03 8.505e-06 y = ((((log(x1) + 2.4) ^ (x2 / -1.9)) + log(x1 + 5.9)) + (... max(0.34, log(max(1.3, x2) * (x2 * x2))) + -0.32)) * 1.1 ─────────────────────────────────────────────────────────────────────────────────────────────────── ════════════════════════════════════════════════════════════════════════════════════════════════════ Press 'q' and then <enter> to stop execution early. Expressions evaluated per second: 1.330e+04 Progress: 809 / 3100 total iterations (26.097%) ════════════════════════════════════════════════════════════════════════════════════════════════════ ─────────────────────────────────────────────────────────────────────────────────────────────────── Complexity Loss Score Equation 1 1.569e+04 0.000e+00 y = 14 4 9.970e+03 1.512e-01 y = log(x2) + 11 5 1.953e+03 1.630e+00 y = (x2 ^ 0.27) / 0.16 6 NaN -0.000e+00 y = abs(x2 + (x1 * x1)) 7 1.729e+03 2.911e+01 y = ((x2 ^ 0.12) / 0.049) - 15 8 1.530e+03 1.221e-01 y = (x2 ^ 0.27) / (inv(x1) + 0.15) 10 1.405e+03 4.275e-02 y = log(x2 * ((x1 * x2) / 4.3)) / 0.64 11 1.272e+03 9.901e-02 y = log((x1 * x2) * (x2 / log(x1))) / 0.64 12 1.248e+03 1.921e-02 y = log((x2 * (x2 * (x1 + 52))) / 7.4) / 0.64 14 1.239e+03 3.749e-03 y = log((((x1 + 53) * x2) * (x2 / 8.8)) + 7.1) / 0.62 18 1.238e+03 2.042e-04 y = log(-3.8 + ((x1 ^ 0.53) + (((x1 + 55) * x2) * (x2 / 9)... ))) / 0.62 21 NaN -0.000e+00 y = max(abs(min(x1 * (x2 + -1.3), abs(1.3 * ((x2 * ((x2 * ... 1) - -0.28)) - -0.28)))), -0.61) 26 1.238e+03 5.822e+00 y = log(((x1 ^ 0.53) + ((x1 + 55) * ((x2 * x2) / 9))) + -3... .9) / min(0.62, (x1 * 0.56) / max(x2, -7.5e-05)) 28 1.238e+03 8.505e-06 y = ((((log(x1) + 2.4) ^ (x2 / -1.9)) + log(x1 + 5.9)) + (... max(0.34, log(max(1.3, x2) * (x2 * x2))) + -0.32)) * 1.1 ─────────────────────────────────────────────────────────────────────────────────────────────────── ════════════════════════════════════════════════════════════════════════════════════════════════════ Press 'q' and then <enter> to stop execution early. Expressions evaluated per second: 1.400e+04 Progress: 872 / 3100 total iterations (28.129%) ════════════════════════════════════════════════════════════════════════════════════════════════════ ─────────────────────────────────────────────────────────────────────────────────────────────────── Complexity Loss Score Equation 1 1.569e+04 0.000e+00 y = 14 4 9.970e+03 1.512e-01 y = log(x2) + 11 5 1.953e+03 1.630e+00 y = (x2 ^ 0.27) / 0.16 6 NaN -0.000e+00 y = abs(x2 + (x1 * x1)) 7 1.721e+03 2.911e+01 y = ((x2 ^ 0.11) / 0.044) - 17 8 1.530e+03 1.178e-01 y = (x2 ^ 0.27) / (inv(x1) + 0.15) 10 1.405e+03 4.275e-02 y = log(x2 * ((x1 * x2) / 4.3)) / 0.64 11 1.272e+03 9.901e-02 y = log((x1 * x2) * (x2 / log(x1))) / 0.64 12 1.248e+03 1.921e-02 y = log((x2 * (x2 * (x1 + 52))) / 7.4) / 0.64 14 1.239e+03 3.749e-03 y = log((((x1 + 53) * x2) * (x2 / 8.8)) + 7.1) / 0.62 17 1.238e+03 6.683e-05 y = (log(max(1.3, (x2 * x2) + 0.61) * x2) * 1.1) + log(x1 ... + -0.11) 18 1.238e+03 6.166e-04 y = log(((x1 ^ 0.53) + -3.9) + ((x1 + 55) * (x2 * (x2 / 9)... ))) / 0.62 19 1.238e+03 -0.000e+00 y = abs(log(((x1 + 55) * ((x2 / 9) * x2)) + ((x1 ^ 0.53) ... + -3.9)) / 0.62) 20 1.238e+03 -0.000e+00 y = max(log((((x1 + 55) * ((x2 / 9) * x2)) + -3.9) + (x1 ... ^ 0.53)) / 0.62, 0.26) 21 NaN -0.000e+00 y = max(abs(min(x1 * (x2 + -1.3), abs(1.3 * ((x2 * ((x2 * ... 1) - -0.28)) - -0.28)))), -0.61) 23 1.238e+03 1.456e+01 y = log(-3.8 + (((-0.83 + x1) ^ 0.53) + ((x1 + 55) * ((x2 ... * x2) / 9)))) / abs(max(0.62, 0.44)) 28 1.238e+03 3.321e-06 y = ((((log(x1) + 2.4) ^ (x2 / -1.9)) + log(x1 + 5.9)) + (... max(0.34, log(max(1.3, x2) * (x2 * x2))) + -0.32)) * 1.1 ─────────────────────────────────────────────────────────────────────────────────────────────────── ════════════════════════════════════════════════════════════════════════════════════════════════════ Press 'q' and then <enter> to stop execution early. Expressions evaluated per second: 1.470e+04 Progress: 925 / 3100 total iterations (29.839%) ════════════════════════════════════════════════════════════════════════════════════════════════════ ─────────────────────────────────────────────────────────────────────────────────────────────────── Complexity Loss Score Equation 1 1.569e+04 0.000e+00 y = 14 4 9.920e+03 1.529e-01 y = log(x2) + 11 5 1.953e+03 1.625e+00 y = (x2 ^ 0.27) / 0.16 6 NaN -0.000e+00 y = abs(x2 + (x1 * x1)) 7 1.700e+03 2.911e+01 y = ((x2 ^ 0.047) / 0.017) - 55 8 1.530e+03 1.055e-01 y = (x2 ^ 0.27) / (inv(x1) + 0.15) 10 1.405e+03 4.275e-02 y = log(x2 * ((x1 * x2) / 4.3)) / 0.64 11 1.272e+03 9.901e-02 y = log((x1 * x2) * (x2 / log(x1))) / 0.64 12 1.248e+03 1.921e-02 y = log((x2 * (x2 * (x1 + 52))) / 7.4) / 0.64 14 1.239e+03 3.749e-03 y = log((((x1 + 53) * x2) * (x2 / 8.8)) + 7.1) / 0.62 17 1.238e+03 6.683e-05 y = (log(max(1.3, (x2 * x2) + 0.61) * x2) * 1.1) + log(x1 ... + -0.11) 18 1.238e+03 6.166e-04 y = log((x2 * ((x1 + 55) * (x2 / 9))) + ((x1 ^ 0.53) + -4)... ) / 0.62 20 1.238e+03 -0.000e+00 y = min(log((x2 * (((x1 + 55) * x2) / 9)) + ((x1 ^ 0.53) ... + -4)) / 0.62, x1) 21 NaN -0.000e+00 y = max(abs(min(x1 * (x2 + -1.3), abs(1.3 * ((x2 * ((x2 * ... 1) - -0.28)) - -0.28)))), -0.61) 22 1.238e+03 2.911e+01 y = log(((((x1 + 55) * (x2 * max(x2, 0.62))) / 9) + max(x1... ^ 0.53, 1.4)) + -4) / 0.62 23 1.238e+03 4.017e-07 y = log(-3.8 + (((-0.83 + x1) ^ 0.53) + ((x1 + 55) * ((x2 ... * x2) / 9)))) / abs(max(0.62, 0.44)) 28 1.237e+03 2.168e-05 y = ((x2 + log(x1)) ^ (x2 / -1.9)) + (((log(x1 + 5.9) + -0... .32) + max(0.34, log(x2 * (x2 * max(1.3, x2))))) * 1.1) 30 1.237e+03 1.302e-05 y = (((log(x1) + x2) ^ (x2 / -1.8)) + (max(log(x1 + 6) + m... ax(0.33, log((x2 * x2) * max(1.2, x2))), 0.36) + -0.31)) *... 1.1 ─────────────────────────────────────────────────────────────────────────────────────────────────── ════════════════════════════════════════════════════════════════════════════════════════════════════ Press 'q' and then <enter> to stop execution early. Expressions evaluated per second: 1.470e+04 Progress: 978 / 3100 total iterations (31.548%) ════════════════════════════════════════════════════════════════════════════════════════════════════ ─────────────────────────────────────────────────────────────────────────────────────────────────── Complexity Loss Score Equation 1 1.569e+04 0.000e+00 y = 14 4 9.920e+03 1.529e-01 y = log(x2) + 11 5 1.953e+03 1.625e+00 y = (x2 ^ 0.27) / 0.16 6 NaN -0.000e+00 y = abs(x2 + (x1 * x1)) 7 1.690e+03 2.911e+01 y = ((x2 ^ 0.026) / 0.0089) - 1.1e+02 8 1.530e+03 9.979e-02 y = (x2 ^ 0.27) / (inv(x1) + 0.15) 10 1.405e+03 4.275e-02 y = log(x2 * ((x1 * x2) / 4.3)) / 0.64 11 1.272e+03 9.901e-02 y = log((x1 * x2) * (x2 / log(x1))) / 0.64 12 1.248e+03 1.921e-02 y = log((x2 * (x2 * (x1 + 52))) / 7.4) / 0.64 14 1.239e+03 3.749e-03 y = log((((x1 + 53) * x2) * (x2 / 8.8)) + 7.1) / 0.62 15 1.238e+03 3.046e-04 y = (log(((max(1.3, x2) * x2) + 0.61) * x2) * 1.1) + log(x... 1) 17 1.238e+03 1.239e-04 y = (log(max(x2, ((x2 * x2) * x2) + 0.81)) * 1.1) + log(x1... + 1.2) 18 1.238e+03 2.646e-04 y = log((((x2 * ((x1 + 55) * x2)) / 9) + (x1 ^ 0.53)) + -4... ) / 0.62 21 NaN -0.000e+00 y = max(abs(min(x1 * (x2 + -1.3), abs(1.3 * ((x2 * ((x2 * ... 1) - -0.28)) - -0.28)))), -0.61) 22 1.238e+03 2.911e+01 y = log(((((x1 + 55) * (x2 * max(x2, 0.62))) / 9) + max(x1... ^ 0.53, 1.4)) + -4) / 0.62 23 1.238e+03 4.017e-07 y = log(-3.8 + (((-0.83 + x1) ^ 0.53) + ((x1 + 55) * ((x2 ... * x2) / 9)))) / abs(max(0.62, 0.44)) 26 1.238e+03 1.501e-05 y = (((x2 + log(x1)) ^ (x2 / -1.8)) + ((log(x1 + 6.1) + -0... .32) + log((x2 * x2) * max(1.2, x2)))) * 1.1 28 1.237e+03 3.927e-05 y = ((log(x1) + x2) ^ (x2 / -1.8)) + (((log(x1 + 6) + max(... 0.34, log(max(x2, 1.2) * (x2 * x2)))) + -0.32) * 1.1) 30 1.237e+03 5.454e-06 y = (((log(x1) + x2) ^ (x2 / -1.8)) + (max(log(x1 + 6) + m... ax(0.33, log((x2 * x2) * max(1.2, x2))), 0.36) + -0.31)) *... 1.1 ─────────────────────────────────────────────────────────────────────────────────────────────────── ════════════════════════════════════════════════════════════════════════════════════════════════════ Press 'q' and then <enter> to stop execution early. Expressions evaluated per second: 1.480e+04 Progress: 1048 / 3100 total iterations (33.806%) ════════════════════════════════════════════════════════════════════════════════════════════════════ ─────────────────────────────────────────────────────────────────────────────────────────────────── Complexity Loss Score Equation 1 1.569e+04 0.000e+00 y = 14 4 9.582e+03 1.645e-01 y = log(x2) + 11 5 1.953e+03 1.591e+00 y = (x2 ^ 0.27) / 0.16 6 NaN -0.000e+00 y = abs(x2 + (x1 * x1)) 7 1.690e+03 2.911e+01 y = ((x2 ^ 0.026) / 0.0089) - 1.1e+02 8 1.530e+03 9.979e-02 y = (x2 ^ 0.27) / (inv(x1) + 0.15) 10 1.405e+03 4.275e-02 y = log(x2 * ((x1 * x2) / 4.3)) / 0.64 11 1.250e+03 1.163e-01 y = (log(x2 * (x2 * x2)) + log(x1)) * 1 12 1.248e+03 1.883e-03 y = log((x2 * (x2 * (x1 + 52))) / 7.4) / 0.64 13 1.238e+03 7.693e-03 y = (log(((x2 * x2) + 0.61) * x2) * 1.1) + log(x1) 15 1.238e+03 5.549e-05 y = (log(((max(1.3, x2) * x2) + 0.61) * x2) * 1.1) + log(x... 1) 16 1.238e+03 3.311e-04 y = log(((x2 * ((x1 + 55) * x2)) / 9) + (x1 ^ 0.44)) / 0.6... 2 18 1.238e+03 9.069e-05 y = log(((x1 ^ 0.53) + -4) + (((x2 * (x1 + 55)) * x2) / 9)... ) / 0.62 20 1.238e+03 6.635e-07 y = log((((x1 + -0.9) ^ 0.53) + -3.9) + (((x1 + 55) * (x2 ... * x2)) / 9)) / 0.62 21 NaN -0.000e+00 y = max(abs(min(x1 * (x2 + -1.3), abs(1.3 * ((x2 * ((x2 * ... 1) - -0.28)) - -0.28)))), -0.61) 26 1.238e+03 5.822e+00 y = (((x2 + log(x1)) ^ (x2 / -1.8)) + ((log(x1 + 6.1) + -0... .32) + log((x2 * x2) * max(1.2, x2)))) * 1.1 28 1.237e+03 3.927e-05 y = ((log(x1) + x2) ^ (x2 / -1.8)) + (((log(x1 + 6) + max(... 0.34, log(max(x2, 1.2) * (x2 * x2)))) + -0.32) * 1.1) 30 1.237e+03 5.454e-06 y = (((log(x1) + x2) ^ (x2 / -1.8)) + (max(log(x1 + 6) + m... ax(0.33, log((x2 * x2) * max(1.2, x2))), 0.36) + -0.31)) *... 1.1 ─────────────────────────────────────────────────────────────────────────────────────────────────── ════════════════════════════════════════════════════════════════════════════════════════════════════ Press 'q' and then <enter> to stop execution early. Expressions evaluated per second: 1.490e+04 Progress: 1126 / 3100 total iterations (36.323%) ════════════════════════════════════════════════════════════════════════════════════════════════════ ─────────────────────────────────────────────────────────────────────────────────────────────────── Complexity Loss Score Equation 1 1.569e+04 0.000e+00 y = 14 4 9.582e+03 1.645e-01 y = log(x2) + 11 5 1.953e+03 1.591e+00 y = (x2 ^ 0.27) / 0.16 6 NaN -0.000e+00 y = abs(x2 + (x1 * x1)) 7 1.258e+03 2.911e+01 y = (log(x2) * 3.2) + log(x1) 9 1.247e+03 4.570e-03 y = max(log(x2) * 3.2, 0.87) + log(x1) 10 1.246e+03 2.897e-04 y = log(x1) + max(log(x2) * 3.2, sin(x2)) 11 1.243e+03 2.960e-03 y = (max(log(x2) * 3.2, 0.78) + log(x1)) + 0.1 13 1.238e+03 1.689e-03 y = (log(((x2 * x2) + 0.61) * x2) * 1.1) + log(x1) 15 1.238e+03 1.101e-04 y = (log(((max(x2, 1.3) * x2) + 0.54) * x2) * 1.1) + log(x... 1) 16 1.238e+03 2.219e-04 y = log(((x2 * ((x1 + 55) * x2)) / 9) + (x1 ^ 0.44)) / 0.6... 2 18 1.238e+03 9.069e-05 y = log(((x1 ^ 0.53) + -4) + (((x2 * (x1 + 55)) * x2) / 9)... ) / 0.62 20 1.238e+03 6.635e-07 y = log((((x1 + -0.9) ^ 0.53) + -3.9) + (((x1 + 55) * (x2 ... * x2)) / 9)) / 0.62 21 NaN -0.000e+00 y = max(abs(min(x1 * (x2 + -1.3), abs(1.3 * ((x2 * ((x2 * ... 1) - -0.28)) - -0.28)))), -0.61) 26 1.238e+03 5.822e+00 y = (((x2 + log(x1)) ^ (x2 / -1.8)) + ((log(x1 + 6.1) + -0... .32) + log((x2 * x2) * max(1.2, x2)))) * 1.1 28 1.237e+03 3.959e-05 y = ((log(x1) + x2) ^ (x2 / -1.8)) + ((log(x1 + 6.1) + (ma... x(log((x2 * max(x2, 1.2)) * x2), 0.34) + -0.32)) * 1.1) 30 1.237e+03 8.397e-06 y = ((log(x1) + x2) ^ (max(x2, 1.1) / -1.8)) + ((log(x1 + ... 6) + (-0.32 + max(0.34, log((x2 * max(x2, 1.2)) * x2)))) *... 1.1) ─────────────────────────────────────────────────────────────────────────────────────────────────── ════════════════════════════════════════════════════════════════════════════════════════════════════ Press 'q' and then <enter> to stop execution early. Expressions evaluated per second: 1.490e+04 Progress: 1190 / 3100 total iterations (38.387%) ════════════════════════════════════════════════════════════════════════════════════════════════════ ─────────────────────────────────────────────────────────────────────────────────────────────────── Complexity Loss Score Equation 1 1.569e+04 0.000e+00 y = 14 4 9.582e+03 1.645e-01 y = log(x2) + 11 5 1.953e+03 1.591e+00 y = (x2 ^ 0.27) / 0.16 6 NaN -0.000e+00 y = abs(x2 + (x1 * x1)) 7 1.258e+03 2.911e+01 y = (log(x2) * 3.2) + log(x1) 9 1.247e+03 4.576e-03 y = log(x1) + max(0.89, log(x2) * 3.2) 10 1.246e+03 2.810e-04 y = log(x1) + max(log(x2) * 3.2, sin(x2)) 11 1.243e+03 2.956e-03 y = (max(log(x2) * 3.2, 0.78) + log(x1)) + 0.1 13 1.238e+03 1.689e-03 y = (log(((x2 * x2) + 0.61) * x2) * 1.1) + log(x1) 15 1.238e+03 1.101e-04 y = (log(((max(x2, 1.3) * x2) + 0.54) * x2) * 1.1) + log(x... 1) 16 1.238e+03 2.219e-04 y = log(((x2 * ((x1 + 55) * x2)) / 9) + (x1 ^ 0.44)) / 0.6... 2 18 1.238e+03 9.069e-05 y = log(((x1 ^ 0.53) + -4) + (((x2 * (x1 + 55)) * x2) / 9)... ) / 0.62 20 1.238e+03 6.635e-07 y = log((((x1 + -0.9) ^ 0.53) + -3.9) + (((x1 + 55) * (x2 ... * x2)) / 9)) / 0.62 21 NaN -0.000e+00 y = max(abs(min(x1 * (x2 + -1.3), abs(1.3 * ((x2 * ((x2 * ... 1) - -0.28)) - -0.28)))), -0.61) 26 1.238e+03 5.822e+00 y = (((x2 + log(x1)) ^ (x2 / -1.8)) + ((log(x1 + 6.1) + -0... .32) + log((x2 * x2) * max(1.2, x2)))) * 1.1 28 1.237e+03 4.072e-05 y = ((((x2 + log(x1)) ^ (x2 / -1.8)) + (log(x1 + 6) + max(... 0.34, log((x2 * max(x2, 1.3)) * x2)))) + -0.32) * 1.1 30 1.237e+03 3.694e-05 y = ((((log(x1) + x2) ^ (max(1.2, x2) / -1.8)) + log(x1 + ... 6)) + (max(0.34, log((max(x2, 1.3) * x2) * x2)) + -0.32)) ... * 1.1 ─────────────────────────────────────────────────────────────────────────────────────────────────── ════════════════════════════════════════════════════════════════════════════════════════════════════ Press 'q' and then <enter> to stop execution early. Expressions evaluated per second: 1.490e+04 Progress: 1244 / 3100 total iterations (40.129%) ════════════════════════════════════════════════════════════════════════════════════════════════════ ─────────────────────────────────────────────────────────────────────────────────────────────────── Complexity Loss Score Equation 1 1.569e+04 0.000e+00 y = 14 4 9.582e+03 1.645e-01 y = log(x2) + 11 5 1.953e+03 1.591e+00 y = (x2 ^ 0.27) / 0.16 6 NaN -0.000e+00 y = abs(x2 + (x1 * x1)) 7 1.258e+03 2.911e+01 y = (log(x2) * 3.2) + log(x1) 9 1.247e+03 4.576e-03 y = log(x1) + max(0.89, log(x2) * 3.2) 10 1.246e+03 2.810e-04 y = log(x1) + max(log(x2) * 3.2, sin(x2)) 11 1.243e+03 2.956e-03 y = (max(log(x2) * 3.2, 0.78) + log(x1)) + 0.1 13 1.238e+03 1.689e-03 y = (log(((x2 * x2) + 0.61) * x2) * 1.1) + log(x1) 15 1.238e+03 1.101e-04 y = (log(((max(x2, 1.3) * x2) + 0.54) * x2) * 1.1) + log(x... 1) 16 1.238e+03 2.219e-04 y = log(((x2 * ((x1 + 55) * x2)) / 9) + (x1 ^ 0.44)) / 0.6... 2 18 1.238e+03 9.069e-05 y = log(((x1 ^ 0.53) + -4) + (((x2 * (x1 + 55)) * x2) / 9)... ) / 0.62 20 1.238e+03 6.635e-07 y = log((((x1 + -0.9) ^ 0.53) + -3.9) + (((x1 + 55) * (x2 ... * x2)) / 9)) / 0.62 21 NaN -0.000e+00 y = max(abs(min(x1 * (x2 + -1.3), abs(1.3 * ((x2 * ((x2 * ... 1) - -0.28)) - -0.28)))), -0.61) 25 1.237e+03 7.278e+00 y = (((log(x1 + 6.2) + ((x2 + 1.1) ^ (x2 / -0.98))) + -0.3... 1) + log((x2 * x2) * max(x2, 0.068))) * 1.1 29 1.237e+03 2.428e-05 y = (((((x2 + sin(cos(x2))) ^ (x2 / -0.48)) + log(x1 + 6.2... )) + log(x2 * (x2 * max(max(x2, -1.4), -0.32)))) + -0.31) ... * 1.1 ─────────────────────────────────────────────────────────────────────────────────────────────────── ════════════════════════════════════════════════════════════════════════════════════════════════════ Press 'q' and then <enter> to stop execution early. Expressions evaluated per second: 1.470e+04 Progress: 1300 / 3100 total iterations (41.935%) ════════════════════════════════════════════════════════════════════════════════════════════════════ ─────────────────────────────────────────────────────────────────────────────────────────────────── Complexity Loss Score Equation 1 1.569e+04 0.000e+00 y = 14 4 9.582e+03 1.645e-01 y = log(x2) + 11 5 1.953e+03 1.591e+00 y = (x2 ^ 0.27) / 0.16 6 NaN -0.000e+00 y = abs(x2 + (x1 * x1)) 7 1.258e+03 2.911e+01 y = (log(x2) * 3.2) + log(x1) 9 1.247e+03 4.576e-03 y = log(x1) + max(0.89, log(x2) * 3.2) 10 1.246e+03 2.810e-04 y = log(x1) + max(log(x2) * 3.2, sin(x2)) 11 1.243e+03 2.956e-03 y = (max(log(x2) * 3.2, 0.78) + log(x1)) + 0.1 13 1.238e+03 1.786e-03 y = (log(((x2 * x2) * x2) + 0.81) * 1.1) + log(x1) 15 1.238e+03 1.316e-05 y = (log(((max(x2, 1.3) * x2) + 0.54) * x2) * 1.1) + log(x... 1) 16 1.238e+03 2.219e-04 y = log(((x2 * ((x1 + 55) * x2)) / 9) + (x1 ^ 0.44)) / 0.6... 2 18 1.238e+03 9.069e-05 y = log(((x1 ^ 0.53) + -4) + (((x2 * (x1 + 55)) * x2) / 9)... ) / 0.62 20 1.238e+03 6.635e-07 y = log((((x1 + -0.9) ^ 0.53) + -3.9) + (((x1 + 55) * (x2 ... * x2)) / 9)) / 0.62 21 NaN -0.000e+00 y = max(abs(min(x1 * (x2 + -1.3), abs(1.3 * ((x2 * ((x2 * ... 1) - -0.28)) - -0.28)))), -0.61) 22 1.238e+03 2.911e+01 y = min(log((((x1 + -1.4) ^ 0.53) + -3.8) + ((x1 + 55) * (... x2 * (x2 / 9)))) / 0.62, x1) 25 1.237e+03 5.882e-05 y = ((log(max(x2 * (x2 * x2), 0.4)) + log(x1 + 6.2)) + (((... x2 + 1) ^ (x2 / -0.97)) + -0.31)) * 1.1 26 1.237e+03 -0.000e+00 y = ((log(x2 * (x2 * abs(max(x2, 0.4)))) + (log(x1 + 6.2)... + ((x2 + 1) ^ (x2 / -0.97)))) + -0.31) * 1.1 27 1.237e+03 2.411e-04 y = 1.1 * abs(log(max((x2 * x2) * x2, abs(-1.2))) + (log(x... 1 + 6.2) + (((1.1 + x2) ^ (x2 / -0.98)) + -0.31))) ─────────────────────────────────────────────────────────────────────────────────────────────────── ════════════════════════════════════════════════════════════════════════════════════════════════════ Press 'q' and then <enter> to stop execution early. Expressions evaluated per second: 1.400e+04 Progress: 1359 / 3100 total iterations (43.839%) ════════════════════════════════════════════════════════════════════════════════════════════════════ ─────────────────────────────────────────────────────────────────────────────────────────────────── Complexity Loss Score Equation 1 1.569e+04 0.000e+00 y = 14 4 9.582e+03 1.645e-01 y = log(x2) + 11 5 1.953e+03 1.591e+00 y = (x2 ^ 0.27) / 0.16 6 NaN -0.000e+00 y = abs(x2 + (x1 * x1)) 7 1.258e+03 2.911e+01 y = (log(x2) * 3.2) + log(x1) 9 1.247e+03 4.576e-03 y = log(x1) + max(0.89, log(x2) * 3.2) 10 1.246e+03 2.810e-04 y = log(x1) + max(log(x2) * 3.2, sin(x2)) 11 1.243e+03 2.956e-03 y = max(0.78, log(x2) * 3.2) + (log(x1) + 0.1) 13 1.238e+03 1.786e-03 y = (log(((x2 * x2) * x2) + 0.81) * 1.1) + log(x1) 15 1.238e+03 5.365e-05 y = (log(((x2 * x2) * x2) + 0.81) * 1.1) + log(x1 - -0.4) 16 1.238e+03 1.409e-04 y = log(((x2 * ((x1 + 55) * x2)) / 9) + (x1 ^ 0.44)) / 0.6... 2 17 1.238e+03 4.404e-06 y = abs(log((x1 ^ 0.44) + ((x1 + 54) * ((x2 * x2) / 9))) /... 0.62) 18 1.238e+03 1.770e-04 y = log(((x1 ^ 0.53) + -4) + (((x2 * (x1 + 55)) * x2) / 9)... ) / 0.62 20 1.238e+03 6.635e-07 y = log(((x1 + -0.9) ^ 0.53) + (-3.9 + ((((x1 + 55) * x2) ... * x2) / 9))) / 0.62 21 NaN -0.000e+00 y = max(abs(min(x1 * (x2 + -1.3), abs(1.3 * ((x2 * ((x2 * ... 1) - -0.28)) - -0.28)))), -0.61) 22 1.238e+03 2.911e+01 y = min(log((((x1 + -1.4) ^ 0.53) + -3.8) + ((x1 + 55) * (... x2 * (x2 / 9)))) / 0.62, x1) 25 1.237e+03 5.882e-05 y = ((log(max(x2 * (x2 * x2), 0.4)) + log(x1 + 6.2)) + (((... x2 + 1) ^ (x2 / -0.97)) + -0.31)) * 1.1 26 1.237e+03 -0.000e+00 y = ((log(x2 * (x2 * abs(max(x2, 0.4)))) + (log(x1 + 6.2)... + ((x2 + 1) ^ (x2 / -0.97)))) + -0.31) * 1.1 27 1.237e+03 2.411e-04 y = 1.1 * abs(log(max((x2 * x2) * x2, abs(-1.2))) + (log(x... 1 + 6.2) + (((1.1 + x2) ^ (x2 / -0.98)) + -0.31))) ─────────────────────────────────────────────────────────────────────────────────────────────────── ════════════════════════════════════════════════════════════════════════════════════════════════════ Press 'q' and then <enter> to stop execution early. Expressions evaluated per second: 1.380e+04 Progress: 1423 / 3100 total iterations (45.903%) ════════════════════════════════════════════════════════════════════════════════════════════════════ ─────────────────────────────────────────────────────────────────────────────────────────────────── Complexity Loss Score Equation 1 1.569e+04 0.000e+00 y = 14 4 9.582e+03 1.645e-01 y = log(x2) + 11 5 1.953e+03 1.591e+00 y = (x2 ^ 0.27) / 0.16 6 NaN -0.000e+00 y = abs(x2 + (x1 * x1)) 7 1.258e+03 2.911e+01 y = (log(x2) * 3.2) + log(x1) 9 1.247e+03 4.576e-03 y = log(x1) + max(0.89, log(x2) * 3.2) 10 1.246e+03 2.810e-04 y = log(x1) + max(log(x2) * 3.2, sin(x2)) 11 1.243e+03 2.956e-03 y = max(0.78, log(x2) * 3.2) + (log(x1) + 0.1) 12 1.242e+03 3.724e-04 y = abs(max(-0.99, log(x2 - -0.1) * 3.2) + log(x1)) 13 1.238e+03 3.200e-03 y = (log(((x2 * x2) * x2) + 0.81) * 1.1) + log(x1) 15 1.238e+03 5.365e-05 y = (log(((x2 * x2) * x2) + 0.81) * 1.1) + log(x1 - -0.4) 16 1.238e+03 1.453e-04 y = log((x1 ^ 0.44) + (x2 * ((x2 * (x1 + 54)) / 9))) / 0.6... 2 18 1.238e+03 8.848e-05 y = log(((x1 ^ 0.53) + -4) + (((x2 * (x1 + 55)) * x2) / 9)... ) / 0.62 19 1.238e+03 1.295e-05 y = ((-0.31 + log(6.2 + x1)) + log(max(1.2, x2 * (x2 * x2)... ) + 0.75)) * 1.1 21 NaN -0.000e+00 y = max(abs(min(x1 * (x2 + -1.3), abs(1.3 * ((x2 * ((x2 * ... 1) - -0.28)) - -0.28)))), -0.61) 24 1.237e+03 9.704e+00 y = 1.1 * abs(log(x2 * (x2 * x2)) + (log(x1 + 6.2) + (((1.... 1 + x2) ^ (x2 / -0.98)) + -0.31))) 25 1.237e+03 2.527e-04 y = (((log(max((x2 * x2) * x2, 1.2)) + log(x1 + 6.2)) + ((... x2 + 1.2) ^ (x2 / -1))) + -0.31) * 1.1 ─────────────────────────────────────────────────────────────────────────────────────────────────── ════════════════════════════════════════════════════════════════════════════════════════════════════ Press 'q' and then <enter> to stop execution early. Expressions evaluated per second: 1.490e+04 Progress: 1500 / 3100 total iterations (48.387%) ════════════════════════════════════════════════════════════════════════════════════════════════════ ─────────────────────────────────────────────────────────────────────────────────────────────────── Complexity Loss Score Equation 1 1.569e+04 0.000e+00 y = 14 4 9.582e+03 1.645e-01 y = log(x2) + 11 5 1.953e+03 1.591e+00 y = (x2 ^ 0.27) / 0.16 6 NaN -0.000e+00 y = abs(x2 + (x1 * x1)) 7 1.258e+03 2.911e+01 y = (log(x2) * 3.2) + log(x1) 9 1.242e+03 6.381e-03 y = (log(x2 - -0.1) * 3.2) + log(x1) 13 1.238e+03 8.000e-04 y = (log(((x2 * x2) * x2) + 0.81) * 1.1) + log(x1) 14 1.238e+03 5.647e-05 y = (1.1 * log((x2 * (x2 * x2)) + abs(0.83))) + log(x1) 15 1.238e+03 1.085e-04 y = log(x1 - -1.2) + (log(((x2 * x2) * x2) + 0.81) * 1.1) 16 1.238e+03 8.767e-05 y = log((x1 ^ 0.44) + (x2 * ((x2 * (x1 + 54)) / 9))) / 0.6... 2 17 1.238e+03 7.807e-05 y = ((-0.31 + log(6.2 + x1)) + log((x2 * (x2 * x2)) + 0.75... )) * 1.1 18 1.238e+03 9.889e-05 y = log(((((x2 * (x1 + 55)) * x2) / 9) + (x1 ^ 0.53)) + -4... ) / 0.62 19 1.238e+03 1.874e-05 y = (log(x1 + 6.2) + (log(max(1.2, x2 * (x2 * x2)) + 0.76)... + -0.31)) * 1.1 21 NaN -0.000e+00 y = max(abs(min(x1 * (x2 + -1.3), abs(1.3 * ((x2 * ((x2 * ... 1) - -0.28)) - -0.28)))), -0.61) 24 1.237e+03 9.704e+00 y = 1.1 * abs(log(x2 * (x2 * x2)) + (log(x1 + 6.2) + (((1.... 1 + x2) ^ (x2 / -0.98)) + -0.31))) 25 1.237e+03 2.527e-04 y = (((log(max((x2 * x2) * x2, 1.2)) + log(x1 + 6.2)) + ((... x2 + 1.2) ^ (x2 / -1))) + -0.31) * 1.1 ─────────────────────────────────────────────────────────────────────────────────────────────────── ════════════════════════════════════════════════════════════════════════════════════════════════════ Press 'q' and then <enter> to stop execution early. Expressions evaluated per second: 1.510e+04 Progress: 1572 / 3100 total iterations (50.710%) ════════════════════════════════════════════════════════════════════════════════════════════════════ ─────────────────────────────────────────────────────────────────────────────────────────────────── Complexity Loss Score Equation 1 1.569e+04 0.000e+00 y = 14 4 9.582e+03 1.645e-01 y = log(x2) + 11 5 1.953e+03 1.591e+00 y = (x2 ^ 0.27) / 0.16 6 NaN -0.000e+00 y = abs(x2 + (x1 * x1)) 7 1.258e+03 2.911e+01 y = (log(x2) * 3.2) + log(x1) 9 1.242e+03 6.381e-03 y = (log(x2 - -0.1) * 3.2) + log(x1) 11 1.239e+03 1.088e-03 y = log(x1) + ((log(x2 - -0.22) * 3.3) - 0.23) 13 1.238e+03 5.453e-04 y = (log((x2 * (x2 * x2)) + 0.85) * 1.1) + log(x1) 15 1.238e+03 4.892e-05 y = log(x1 - -1.2) + (log(((x2 * x2) * x2) + 0.81) * 1.1) 16 1.238e+03 8.767e-05 y = log((x1 ^ 0.44) + (x2 * ((x2 * (x1 + 54)) / 9))) / 0.6... 2 17 1.238e+03 7.807e-05 y = ((-0.31 + log(6.2 + x1)) + log((x2 * (x2 * x2)) + 0.75... )) * 1.1 18 1.238e+03 9.889e-05 y = log(((((x2 * (x1 + 55)) * x2) / 9) + (x1 ^ 0.53)) + -4... ) / 0.62 19 1.238e+03 1.874e-05 y = (log(x1 + 6.2) + (log(max(1.2, x2 * (x2 * x2)) + 0.76)... + -0.31)) * 1.1 21 NaN -0.000e+00 y = max(abs(min(x1 * (x2 + -1.3), abs(1.3 * ((x2 * ((x2 * ... 1) - -0.28)) - -0.28)))), -0.61) 24 1.237e+03 9.704e+00 y = 1.1 * abs(log(x2 * (x2 * x2)) + (log(x1 + 6.2) + (((1.... 1 + x2) ^ (x2 / -0.98)) + -0.31))) 25 1.237e+03 2.527e-04 y = (((log(max((x2 * x2) * x2, 1.2)) + log(x1 + 6.2)) + ((... x2 + 1.2) ^ (x2 / -1))) + -0.31) * 1.1 ─────────────────────────────────────────────────────────────────────────────────────────────────── ════════════════════════════════════════════════════════════════════════════════════════════════════ Press 'q' and then <enter> to stop execution early. Expressions evaluated per second: 1.520e+04 Progress: 1638 / 3100 total iterations (52.839%) ════════════════════════════════════════════════════════════════════════════════════════════════════ ─────────────────────────────────────────────────────────────────────────────────────────────────── Complexity Loss Score Equation 1 1.569e+04 0.000e+00 y = 14 4 9.582e+03 1.645e-01 y = log(x2) + 11 5 1.953e+03 1.591e+00 y = (x2 ^ 0.27) / 0.16 6 NaN -0.000e+00 y = abs(x2 + (x1 * x1)) 7 1.258e+03 2.911e+01 y = (log(x2) * 3.2) + log(x1) 9 1.242e+03 6.381e-03 y = (log(x2 - -0.1) * 3.2) + log(x1) 11 1.239e+03 1.088e-03 y = log(x1) + ((log(x2 - -0.22) * 3.3) - 0.23) 13 1.238e+03 5.453e-04 y = (log((x2 * (x2 * x2)) + 0.85) * 1.1) + log(x1) 15 1.238e+03 4.892e-05 y = log(x1 - -1.2) + (log(((x2 * x2) * x2) + 0.81) * 1.1) 16 1.238e+03 8.767e-05 y = log((x1 ^ 0.44) + (x2 * ((x2 * (x1 + 54)) / 9))) / 0.6... 2 17 1.238e+03 9.721e-05 y = ((log(x1 + 6.2) + -0.32) + log(((x2 * x2) * x2) + 0.79... )) * 1.1 18 1.238e+03 7.976e-05 y = log(((((x2 * (x1 + 55)) * x2) / 9) + (x1 ^ 0.53)) + -4... ) / 0.62 19 1.237e+03 2.393e-04 y = (log(cos(cos(x1 * (x1 + x2))) + ((x2 * x2) * x2)) * 1.... 1) + log(x1) 21 NaN -0.000e+00 y = max(abs(min(x1 * (x2 + -1.3), abs(1.3 * ((x2 * ((x2 * ... 1) - -0.28)) - -0.28)))), -0.61) 23 1.237e+03 1.456e+01 y = log(max(1, x1)) + (log(((x2 * x2) * x2) + cos(cos(x1 *... (x1 + min(x2, 1.2))))) * 1.1) 25 1.237e+03 5.510e-05 y = (((log(max((x2 * x2) * x2, 1.2)) + log(x1 + 6.2)) + ((... x2 + 1.2) ^ (x2 / -1))) + -0.31) * 1.1 27 1.237e+03 8.499e-05 y = (((x2 * max(x2 ^ x2, x2 + 2.3)) ^ -1.8) + 1.1) * ((log... (x1 + 6.3) + -0.31) + log(x2 * (x2 * x2))) 29 1.237e+03 1.287e-04 y = (((x2 * max(x2 ^ x2, x2 + 2.5)) ^ -1.7) + 1.1) * ((log... (max(x2 * (x2 * x2), 1.2)) + -0.31) + log(x1 + 6.2)) ─────────────────────────────────────────────────────────────────────────────────────────────────── ════════════════════════════════════════════════════════════════════════════════════════════════════ Press 'q' and then <enter> to stop execution early. Expressions evaluated per second: 1.460e+04 Progress: 1687 / 3100 total iterations (54.419%) ════════════════════════════════════════════════════════════════════════════════════════════════════ ─────────────────────────────────────────────────────────────────────────────────────────────────── Complexity Loss Score Equation 1 1.569e+04 0.000e+00 y = 14 4 9.582e+03 1.645e-01 y = log(x2) + 11 5 1.953e+03 1.591e+00 y = (x2 ^ 0.27) / 0.16 6 NaN -0.000e+00 y = abs(x2 + (x1 * x1)) 7 1.258e+03 2.911e+01 y = (log(x2) * 3.2) + log(x1) 9 1.242e+03 6.381e-03 y = (log(x2 - -0.1) * 3.2) + log(x1) 11 1.238e+03 1.545e-03 y = (log((x2 * x2) + 0.39) * 1.6) + log(x1) 13 1.238e+03 8.899e-05 y = (log((x2 * (x2 * x2)) + 0.85) * 1.1) + log(x1) 15 1.238e+03 4.892e-05 y = log(x1 - -1.2) + (log(((x2 * x2) * x2) + 0.81) * 1.1) 16 1.238e+03 8.767e-05 y = log((x1 ^ 0.44) + (x2 * ((x2 * (x1 + 54)) / 9))) / 0.6... 2 17 1.238e+03 9.721e-05 y = ((log(x1 + 6.2) + -0.32) + log(((x2 * x2) * x2) + 0.79... )) * 1.1 18 1.238e+03 7.976e-05 y = log(((((x2 * (x1 + 55)) * x2) / 9) + (x1 ^ 0.53)) + -4... ) / 0.62 19 1.237e+03 2.393e-04 y = (log(cos(cos(x1 * (x1 + x2))) + ((x2 * x2) * x2)) * 1.... 1) + log(x1) 21 NaN -0.000e+00 y = max(abs(min(x1 * (x2 + -1.3), abs(1.3 * ((x2 * ((x2 * ... 1) - -0.28)) - -0.28)))), -0.61) 22 1.237e+03 2.911e+01 y = (log(((x2 * x2) * x2) + cos(cos(x1 + (x1 / (-1 * inv(0... .064)))))) * 1.1) + log(x1) 23 1.237e+03 9.862e-05 y = (log(((x2 * x2) * x2) + cos(cos(x1 + ((x1 / 0.37) * 14... )))) * 1.1) + log(x1 - -1.1) 25 1.237e+03 2.672e-05 y = (((log(max((x2 * x2) * x2, 1.2)) + log(x1 + 6.2)) + ((... x2 + 1.2) ^ (x2 / -1))) + -0.31) * 1.1 27 1.237e+03 8.499e-05 y = (((x2 * max(x2 ^ x2, x2 + 2.3)) ^ -1.8) + 1.1) * ((log... (x1 + 6.3) + -0.31) + log(x2 * (x2 * x2))) 28 1.237e+03 5.278e-08 y = (log((x2 * x2) * x2) + (log(x1 + 6.4) + -0.31)) * abs(... ((x2 * max(x2 ^ x2, x2 + 2.3)) ^ -1.8) + 1.1) 29 1.237e+03 2.573e-04 y = (((x2 * max(x2 ^ x2, x2 + 2.5)) ^ -1.7) + 1.1) * ((log... (max(x2 * (x2 * x2), 1.2)) + -0.31) + log(x1 + 6.2)) ─────────────────────────────────────────────────────────────────────────────────────────────────── ════════════════════════════════════════════════════════════════════════════════════════════════════ Press 'q' and then <enter> to stop execution early. Expressions evaluated per second: 1.510e+04 Progress: 1747 / 3100 total iterations (56.355%) ════════════════════════════════════════════════════════════════════════════════════════════════════ ─────────────────────────────────────────────────────────────────────────────────────────────────── Complexity Loss Score Equation 1 1.569e+04 0.000e+00 y = 14 4 9.582e+03 1.645e-01 y = log(x2) + 11 5 1.953e+03 1.591e+00 y = (x2 ^ 0.27) / 0.16 6 NaN -0.000e+00 y = abs(x2 + (x1 * x1)) 7 1.258e+03 2.911e+01 y = (log(x2) * 3.2) + log(x1) 9 1.242e+03 6.381e-03 y = (log(x2 - -0.1) * 3.2) + log(x1) 11 1.238e+03 1.545e-03 y = (log((x2 * x2) + 0.39) * 1.6) + log(x1) 13 1.238e+03 8.899e-05 y = (log((x2 * (x2 * x2)) + 0.85) * 1.1) + log(x1) 15 1.238e+03 4.892e-05 y = log(x1 - -1.2) + (log(((x2 * x2) * x2) + 0.81) * 1.1) 16 1.238e+03 8.767e-05 y = log((x1 ^ 0.44) + (x2 * ((x2 * (x1 + 54)) / 9))) / 0.6... 2 17 1.238e+03 9.721e-05 y = ((log(x1 + 6.2) + -0.32) + log(((x2 * x2) * x2) + 0.79... )) * 1.1 18 1.238e+03 7.976e-05 y = log(((((x2 * (x1 + 55)) * x2) / 9) + (x1 ^ 0.53)) + -4... ) / 0.62 19 1.237e+03 2.393e-04 y = (log(cos(cos(x1 * (x1 + x2))) + ((x2 * x2) * x2)) * 1.... 1) + log(x1) 21 NaN -0.000e+00 y = max(abs(min(x1 * (x2 + -1.3), abs(1.3 * ((x2 * ((x2 * ... 1) - -0.28)) - -0.28)))), -0.61) 22 1.237e+03 2.911e+01 y = (log(((x2 * x2) * x2) + cos(cos(x1 + (x1 / (-1 * inv(0... .064)))))) * 1.1) + log(x1) 23 1.237e+03 9.862e-05 y = (log(((x2 * x2) * x2) + cos(cos(x1 + ((x1 / 0.37) * 14... )))) * 1.1) + log(x1 - -1.1) 25 1.237e+03 2.672e-05 y = (((log(max((x2 * x2) * x2, 1.2)) + log(x1 + 6.2)) + ((... x2 + 1.2) ^ (x2 / -1))) + -0.31) * 1.1 26 1.237e+03 1.010e-04 y = log(x1) + abs(1.1 * log(cos(cos(min(x1, x1) * ((x2 + 1... .1) * (x1 * x2)))) + ((x2 * x2) * x2))) 27 1.237e+03 6.899e-05 y = (((x2 * max(x2 ^ x2, x2 + 2.3)) ^ -1.8) + 1.1) * ((log... (x1 + 6.3) + -0.31) + log(x2 * (x2 * x2))) 28 1.237e+03 1.990e-04 y = abs(log(cos(cos(min(x1, x2 + -0.21) * ((x2 + 1.1) * (x... 1 * x2)))) + ((x2 * x2) * x2)) * 1.1) + log(x1) 29 1.237e+03 5.835e-05 y = (((x2 * max(x2 ^ x2, x2 + 2.5)) ^ -1.7) + 1.1) * ((log... (max(x2 * (x2 * x2), 1.2)) + -0.31) + log(x1 + 6.2)) ─────────────────────────────────────────────────────────────────────────────────────────────────── ════════════════════════════════════════════════════════════════════════════════════════════════════ Press 'q' and then <enter> to stop execution early. Expressions evaluated per second: 1.460e+04 Progress: 1817 / 3100 total iterations (58.613%) ════════════════════════════════════════════════════════════════════════════════════════════════════ ─────────────────────────────────────────────────────────────────────────────────────────────────── Complexity Loss Score Equation 1 1.569e+04 0.000e+00 y = 14 4 9.582e+03 1.645e-01 y = log(x2) + 11 5 1.953e+03 1.591e+00 y = (x2 ^ 0.27) / 0.16 6 NaN -0.000e+00 y = abs(x2 + (x1 * x1)) 7 1.258e+03 2.911e+01 y = (log(x2) * 3.2) + log(x1) 9 1.242e+03 6.381e-03 y = (log(x2 - -0.1) * 3.2) + log(x1) 10 1.242e+03 -0.000e+00 y = (log(x2 + 0.1) * 3.2) + log(abs(x1)) 11 1.238e+03 3.089e-03 y = (log((x2 * x2) + 0.39) * 1.6) + log(x1) 13 1.238e+03 8.899e-05 y = (log((x2 * (x2 * x2)) + 0.85) * 1.1) + log(x1) 15 1.238e+03 4.892e-05 y = log(x1 - -1.2) + (log(((x2 * x2) * x2) + 0.81) * 1.1) 16 1.238e+03 8.767e-05 y = log((x1 ^ 0.44) + (x2 * ((x2 * (x1 + 54)) / 9))) / 0.6... 2 17 1.238e+03 9.721e-05 y = ((log(x1 + 6.2) + -0.32) + log(((x2 * x2) * x2) + 0.79... )) * 1.1 18 1.238e+03 7.976e-05 y = log(((((x2 * (x1 + 55)) * x2) / 9) + (x1 ^ 0.53)) + -4... ) / 0.62 19 1.237e+03 2.393e-04 y = (log(cos(cos(x1 * (x1 + x2))) + ((x2 * x2) * x2)) * 1.... 1) + log(x1) 21 NaN -0.000e+00 y = max(abs(min(x1 * (x2 + -1.3), abs(1.3 * ((x2 * ((x2 * ... 1) - -0.28)) - -0.28)))), -0.61) 22 1.237e+03 2.911e+01 y = (log(((x2 * x2) * x2) + cos(cos(x1 + (x1 / (-1 * inv(0... .064)))))) * 1.1) + log(x1) 23 1.237e+03 9.862e-05 y = (log(((x2 * x2) * x2) + cos(cos(x1 + ((x1 / 0.37) * 14... )))) * 1.1) + log(x1 - -1.1) 25 1.237e+03 2.672e-05 y = (((log(max((x2 * x2) * x2, 1.2)) + log(x1 + 6.2)) + ((... x2 + 1.2) ^ (x2 / -1))) + -0.31) * 1.1 26 1.237e+03 1.010e-04 y = log(x1) + abs(1.1 * log(cos(cos(min(x1, x1) * ((x2 + 1... .1) * (x1 * x2)))) + ((x2 * x2) * x2))) 27 1.237e+03 6.904e-05 y = (((x2 * max(x2 ^ x2, x2 + 2.3)) ^ -1.8) + 1.1) * ((log... (x1 + 6.4) + -0.31) + log(x2 * (x2 * x2))) 28 1.237e+03 1.990e-04 y = abs(log(cos(cos(min(x1, x2 + -0.21) * ((x2 + 1.1) * (x... 1 * x2)))) + ((x2 * x2) * x2)) * 1.1) + log(x1) 29 1.237e+03 5.835e-05 y = (((x2 * max(x2 ^ x2, x2 + 2.5)) ^ -1.7) + 1.1) * ((log... (max(x2 * (x2 * x2), 1.2)) + -0.31) + log(x1 + 6.2)) ─────────────────────────────────────────────────────────────────────────────────────────────────── ════════════════════════════════════════════════════════════════════════════════════════════════════ Press 'q' and then <enter> to stop execution early. Expressions evaluated per second: 1.500e+04 Progress: 1892 / 3100 total iterations (61.032%) ════════════════════════════════════════════════════════════════════════════════════════════════════ ─────────────────────────────────────────────────────────────────────────────────────────────────── Complexity Loss Score Equation 1 1.569e+04 0.000e+00 y = 14 4 9.582e+03 1.645e-01 y = log(x2) + 11 5 1.953e+03 1.591e+00 y = (x2 ^ 0.27) / 0.16 6 NaN -0.000e+00 y = abs(x2 + (x1 * x1)) 7 1.258e+03 2.911e+01 y = (log(x2) * 3.2) + log(x1) 9 1.242e+03 6.381e-03 y = (log(x2 - -0.1) * 3.2) + log(x1) 10 1.242e+03 -0.000e+00 y = (log(x2 + 0.1) * 3.2) + log(abs(x1)) 11 1.238e+03 3.089e-03 y = (log((x2 * x2) + 0.39) * 1.6) + log(x1) 13 1.238e+03 8.899e-05 y = (log((x2 * (x2 * x2)) + 0.85) * 1.1) + log(x1) 15 1.238e+03 1.067e-04 y = (log(x1 + 55) + (log((x2 * x2) + 0.43) + -2.2)) * 1.6 17 1.238e+03 5.223e-05 y = (log(cos(cos(-0.23 + x2)) + (x2 * (x2 * x2))) * 1.1) +... log(x1) 18 1.238e+03 4.461e-05 y = log(((((x2 * (x1 + 55)) * x2) / 9) + (x1 ^ 0.53)) + -4... ) / 0.62 19 1.237e+03 2.985e-04 y = (log((x2 * (x2 * x2)) + cos(cos(x1 + (x1 / -16)))) * 1... .1) + log(x1) 21 NaN -0.000e+00 y = max(abs(min(x1 * (x2 + -1.3), abs(1.3 * ((x2 * ((x2 * ... 1) - -0.28)) - -0.28)))), -0.61) 22 1.237e+03 2.911e+01 y = log(x1) + (log(cos(sin((-13 / x1) + (cos(x2) * x1))) +... (x2 * (x2 * x2))) * 1.1) 23 1.237e+03 7.097e-05 y = (log(((x2 * x2) * x2) + cos(cos(x1 + ((x1 / 0.37) * 14... )))) * 1.1) + log(x1 - -1.1) 24 1.237e+03 1.544e-04 y = log(x1) + abs(1.1 * log(cos(cos((((x2 + 1.1) * x1) * x... 2) * x1)) + (x2 * (x2 * x2)))) 26 1.237e+03 5.414e-05 y = log(x1) + (log(((x2 * x2) * x2) + cos(cos(sin(x1 / ((x... 2 * x2) * x2)) + (x1 * x2)))) * 1.1) 27 1.236e+03 2.941e-04 y = ((log(max(1.2, x2 * (x2 * x2))) + -0.31) + log(x1 + 6.... 3)) * (((max(x2 ^ x2, 3.6) * x2) ^ -1.8) + 1.1) ─────────────────────────────────────────────────────────────────────────────────────────────────── ════════════════════════════════════════════════════════════════════════════════════════════════════ Press 'q' and then <enter> to stop execution early. Expressions evaluated per second: 1.560e+04 Progress: 1959 / 3100 total iterations (63.194%) ════════════════════════════════════════════════════════════════════════════════════════════════════ ─────────────────────────────────────────────────────────────────────────────────────────────────── Complexity Loss Score Equation 1 1.569e+04 0.000e+00 y = 14 4 9.582e+03 1.645e-01 y = log(x2) + 11 5 1.953e+03 1.591e+00 y = (x2 ^ 0.27) / 0.16 6 NaN -0.000e+00 y = abs(x2 + (x1 * x1)) 7 1.258e+03 2.911e+01 y = (log(x2) * 3.2) + log(x1) 9 1.242e+03 6.381e-03 y = (log(x2 + 0.1) * 3.2) + log(x1) 11 1.238e+03 1.545e-03 y = (log((x2 * x2) + 0.39) * 1.6) + log(x1) 13 1.238e+03 8.899e-05 y = (log((x2 * (x2 * x2)) + 0.85) * 1.1) + log(x1) 15 1.238e+03 1.067e-04 y = (log(x1 + 55) + (log((x2 * x2) + 0.43) + -2.2)) * 1.6 17 1.238e+03 5.223e-05 y = (log(cos(cos(-0.23 + x2)) + (x2 * (x2 * x2))) * 1.1) +... log(x1) 18 1.238e+03 4.461e-05 y = log(((x2 * (((x1 + 55) * x2) / 9)) + -4) + (x1 ^ 0.53)... ) / 0.62 19 1.236e+03 9.805e-04 y = log(x1 - -1.1) + (log(cos(cos(0.37 * x1)) + ((x2 * x2)... * x2)) * 1.1) 21 NaN -0.000e+00 y = max(abs(min(x1 * (x2 + -1.3), abs(1.3 * ((x2 * ((x2 * ... 1) - -0.28)) - -0.28)))), -0.61) 22 1.236e+03 2.911e+01 y = abs(log(x1 - -1.4) + (log((x2 * (x2 * x2)) + cos(cos((... x2 + x1) * 0.36))) * 1.1)) ─────────────────────────────────────────────────────────────────────────────────────────────────── ════════════════════════════════════════════════════════════════════════════════════════════════════ Press 'q' and then <enter> to stop execution early. Expressions evaluated per second: 1.620e+04 Progress: 2029 / 3100 total iterations (65.452%) ════════════════════════════════════════════════════════════════════════════════════════════════════ ─────────────────────────────────────────────────────────────────────────────────────────────────── Complexity Loss Score Equation 1 1.569e+04 0.000e+00 y = 14 4 9.582e+03 1.645e-01 y = log(x2) + 11 5 1.953e+03 1.591e+00 y = (x2 ^ 0.27) / 0.16 6 NaN -0.000e+00 y = abs(x2 + (x1 * x1)) 7 1.258e+03 2.911e+01 y = (log(x2) * 3.2) + log(x1) 9 1.242e+03 6.381e-03 y = (log(x2 + 0.1) * 3.2) + log(x1) 11 1.238e+03 1.545e-03 y = (log((x2 * x2) + 0.39) * 1.6) + log(x1) 13 1.238e+03 8.899e-05 y = (log((x2 * (x2 * x2)) + 0.85) * 1.1) + log(x1) 15 1.238e+03 1.067e-04 y = (log(x1 + 55) + (log((x2 * x2) + 0.43) + -2.2)) * 1.6 17 1.238e+03 5.223e-05 y = (log(cos(cos(-0.23 + x2)) + (x2 * (x2 * x2))) * 1.1) +... log(x1) 18 1.238e+03 4.461e-05 y = log(((x2 * (((x1 + 55) * x2) / 9)) + -4) + (x1 ^ 0.53)... ) / 0.62 19 1.236e+03 1.051e-03 y = log(x1 - -1.4) + (log(cos(cos(x1 * 0.37)) + (x2 * (x2 ... * x2))) * 1.1) 21 NaN -0.000e+00 y = max(abs(min(x1 * (x2 + -1.3), abs(1.3 * ((x2 * ((x2 * ... 1) - -0.28)) - -0.28)))), -0.61) 22 1.236e+03 2.911e+01 y = abs(log(x1 - -1.4) + (log((x2 * (x2 * x2)) + cos(cos((... x2 + x1) * 0.36))) * 1.1)) 29 1.236e+03 -0.000e+00 y = abs(log(x1 - -1.4) + abs(log(cos(cos((max(x2, x1) + x... 2) * 0.36)) + (x2 * (x2 * x2))) * max(min(-0.48, x2), 1.1... ))) 30 1.236e+03 3.899e-05 y = log(x1 - -1.4) + abs(log(cos(cos(max(x2, (x1 + 1.2) + ... x2) * 0.36)) + ((x2 * x2) * x2)) * max(min(-0.48, x2), 1.1... )) ─────────────────────────────────────────────────────────────────────────────────────────────────── ════════════════════════════════════════════════════════════════════════════════════════════════════ Press 'q' and then <enter> to stop execution early. Expressions evaluated per second: 1.550e+04 Progress: 2089 / 3100 total iterations (67.387%) ════════════════════════════════════════════════════════════════════════════════════════════════════ ─────────────────────────────────────────────────────────────────────────────────────────────────── Complexity Loss Score Equation 1 1.569e+04 0.000e+00 y = 14 4 9.582e+03 1.645e-01 y = log(x2) + 11 5 1.953e+03 1.591e+00 y = (x2 ^ 0.27) / 0.16 6 NaN -0.000e+00 y = abs(x2 + (x1 * x1)) 7 1.258e+03 2.911e+01 y = (log(x2) * 3.2) + log(x1) 9 1.242e+03 6.381e-03 y = (log(x2 + 0.1) * 3.2) + log(x1) 11 1.238e+03 1.545e-03 y = (log((x2 * x2) + 0.39) * 1.6) + log(x1) 13 1.238e+03 8.899e-05 y = (log((x2 * (x2 * x2)) + 0.85) * 1.1) + log(x1) 15 1.238e+03 1.067e-04 y = (log(x1 + 55) + (log((x2 * x2) + 0.43) + -2.2)) * 1.6 17 1.238e+03 7.066e-05 y = log(x1) + (log(cos(cos(x1 * 0.37)) + (x2 * (x2 * x2)))... * 1.1) 18 1.238e+03 7.757e-06 y = log(((x2 * (((x1 + 55) * x2) / 9)) + -4) + (x1 ^ 0.53)... ) / 0.62 19 1.236e+03 1.051e-03 y = log(x1 - -1.4) + (log(cos(cos(x1 * 0.37)) + (x2 * (x2 ... * x2))) * 1.1) 21 NaN -0.000e+00 y = max(abs(min(x1 * (x2 + -1.3), abs(1.3 * ((x2 * ((x2 * ... 1) - -0.28)) - -0.28)))), -0.61) 22 1.236e+03 2.911e+01 y = abs((log(cos(cos((x2 + x1) * 0.36)) + ((x2 * x2) * x2)... ) * 1.1) + log(x1 - -1.4)) 26 1.236e+03 1.170e-05 y = abs(log(x1 - -1.5) + max(log(((x2 * x2) * x2) + cos(co... s((x1 + 2.6) * 0.36))) * 1.1, min(x1, 0.4))) ─────────────────────────────────────────────────────────────────────────────────────────────────── ════════════════════════════════════════════════════════════════════════════════════════════════════ Press 'q' and then <enter> to stop execution early. Expressions evaluated per second: 1.540e+04 Progress: 2165 / 3100 total iterations (69.839%) ════════════════════════════════════════════════════════════════════════════════════════════════════ ─────────────────────────────────────────────────────────────────────────────────────────────────── Complexity Loss Score Equation 1 1.569e+04 0.000e+00 y = 14 4 9.582e+03 1.645e-01 y = log(x2) + 11 5 1.953e+03 1.591e+00 y = (x2 ^ 0.27) / 0.16 6 NaN -0.000e+00 y = abs(x2 + (x1 * x1)) 7 1.258e+03 2.911e+01 y = (log(x2) * 3.2) + log(x1) 9 1.242e+03 6.381e-03 y = (log(x2 + 0.1) * 3.2) + log(x1) 11 1.238e+03 1.545e-03 y = (log((x2 * x2) + 0.39) * 1.6) + log(x1) 13 1.238e+03 8.899e-05 y = (log((x2 * (x2 * x2)) + 0.85) * 1.1) + log(x1) 15 1.238e+03 1.067e-04 y = (log(x1 + 55) + (log((x2 * x2) + 0.43) + -2.2)) * 1.6 17 1.238e+03 7.066e-05 y = log(x1) + (1.1 * log(((x2 * x2) * x2) + cos(cos(x1 * 0... .37)))) 18 1.238e+03 7.756e-06 y = log(((x2 * (((x1 + 55) * x2) / 9)) + -4) + (x1 ^ 0.53)... ) / 0.62 19 1.236e+03 1.051e-03 y = log(x1 - -1.4) + (1.1 * log(((x2 * x2) * x2) + cos(cos... (x1 * 0.37)))) 21 NaN -0.000e+00 y = max(abs(min(x1 * (x2 + -1.3), abs(1.3 * ((x2 * ((x2 * ... 1) - -0.28)) - -0.28)))), -0.61) 22 1.236e+03 2.911e+01 y = log(x1 - -1.5) + abs(log(cos(cos((x1 + 2.6) * 0.36)) +... (x2 * (x2 * x2))) * 1.1) 24 1.236e+03 4.479e-07 y = log(x1 - -1.4) + abs(max(log(cos(cos((x1 + 2.6) * 0.36... )) + ((x2 * x2) * x2)) * 1.1, -1.6)) 25 1.236e+03 1.361e-04 y = abs(log(x1 - -1.5) + max(log((x2 * (x2 * x2)) + cos(co... s((x1 + 2.6) * 0.36))) * 1.1, sin(x1))) 27 1.236e+03 2.394e-06 y = log(x1 - -1.3) + abs(max(log(cos(cos((x1 + 2.6) * 0.36... )) + ((x2 * x2) * x2)) * 1.1, min(x1, sin(x1)))) ─────────────────────────────────────────────────────────────────────────────────────────────────── ════════════════════════════════════════════════════════════════════════════════════════════════════ Press 'q' and then <enter> to stop execution early. Expressions evaluated per second: 1.600e+04 Progress: 2244 / 3100 total iterations (72.387%) ════════════════════════════════════════════════════════════════════════════════════════════════════ ─────────────────────────────────────────────────────────────────────────────────────────────────── Complexity Loss Score Equation 1 1.569e+04 0.000e+00 y = 14 4 9.582e+03 1.645e-01 y = log(x2) + 11 5 1.953e+03 1.591e+00 y = (x2 ^ 0.27) / 0.16 6 NaN -0.000e+00 y = abs(x2 + (x1 * x1)) 7 1.258e+03 2.911e+01 y = (log(x2) * 3.2) + log(x1) 9 1.242e+03 6.381e-03 y = (log(x2 + 0.1) * 3.2) + log(x1) 11 1.238e+03 1.545e-03 y = (log((x2 * x2) + 0.39) * 1.6) + log(x1) 13 1.238e+03 8.899e-05 y = (log((x2 * (x2 * x2)) + 0.85) * 1.1) + log(x1) 15 1.238e+03 1.067e-04 y = (log(x1 + 55) + (log((x2 * x2) + 0.43) + -2.2)) * 1.6 17 1.238e+03 7.066e-05 y = log(x1) + (1.1 * log(((x2 * x2) * x2) + cos(cos(x1 * 0... .37)))) 18 1.238e+03 7.756e-06 y = log(((x2 * (((x1 + 55) * x2) / 9)) + -4) + (x1 ^ 0.53)... ) / 0.62 19 1.236e+03 1.051e-03 y = log(x1 - -1.4) + (1.1 * log(((x2 * x2) * x2) + cos(cos... (x1 * 0.37)))) 21 NaN -0.000e+00 y = max(abs(min(x1 * (x2 + -1.3), abs(1.3 * ((x2 * ((x2 * ... 1) - -0.28)) - -0.28)))), -0.61) 22 1.236e+03 2.911e+01 y = log(x1 + cos(x1)) + (log(cos(cos((x1 + 2.7) * 0.36)) +... ((x2 * x2) * x2)) * 1.1) 25 1.236e+03 6.172e-06 y = abs(log(x1 - -1.5) + max(log((x2 * (x2 * x2)) + cos(co... s((x1 + 2.6) * 0.36))) * 1.1, sin(x1))) 27 1.236e+03 1.972e-05 y = abs((max(log(cos(cos((x1 + 2.6) * 0.36)) + (x2 * (x2 *... x2))), min(0.98, sin(x1))) * 1.1) + log(x1 - -1.3)) 28 1.236e+03 2.638e-04 y = (max(log(cos(cos((x1 + 2.9) * 0.36)) + (x2 * (x2 * x2)... )), sin((x1 + x1) * 0.36)) * 1.1) + log(x1 - -1.3) ─────────────────────────────────────────────────────────────────────────────────────────────────── ════════════════════════════════════════════════════════════════════════════════════════════════════ Press 'q' and then <enter> to stop execution early. Expressions evaluated per second: 1.550e+04 Progress: 2315 / 3100 total iterations (74.677%) ════════════════════════════════════════════════════════════════════════════════════════════════════ ─────────────────────────────────────────────────────────────────────────────────────────────────── Complexity Loss Score Equation 1 1.569e+04 0.000e+00 y = 14 4 9.582e+03 1.645e-01 y = log(x2) + 11 5 1.953e+03 1.591e+00 y = (x2 ^ 0.27) / 0.16 6 NaN -0.000e+00 y = abs(x2 + (x1 * x1)) 7 1.258e+03 2.911e+01 y = (log(x2) * 3.2) + log(x1) 9 1.242e+03 6.381e-03 y = (log(x2 + 0.1) * 3.2) + log(x1) 11 1.238e+03 1.545e-03 y = (log((x2 * x2) + 0.39) * 1.6) + log(x1) 13 1.238e+03 8.899e-05 y = (log((x2 * (x2 * x2)) + 0.85) * 1.1) + log(x1) 15 1.238e+03 1.067e-04 y = (log(x1 + 55) + (log((x2 * x2) + 0.43) + -2.2)) * 1.6 17 1.238e+03 7.066e-05 y = log(x1) + (1.1 * log(((x2 * x2) * x2) + cos(cos(x1 * 0... .37)))) 18 1.237e+03 2.981e-04 y = (log(((x2 * x2) * x2) + max(0.63, cos(x1 * 0.9))) * 1.... 1) + log(x1) 19 1.236e+03 7.874e-04 y = log(x1) + (log(cos(cos((2.7 + x1) * 0.36)) + (x2 * (x2... * x2))) * 1.1) 21 NaN -0.000e+00 y = max(abs(min(x1 * (x2 + -1.3), abs(1.3 * ((x2 * ((x2 * ... 1) - -0.28)) - -0.28)))), -0.61) 22 1.236e+03 2.911e+01 y = log(x1 - -0.78) + (max(log(x2 * ((x2 * x2) + 0.47)), s... in((x1 + x1) * 0.36)) * 1.1) 23 1.236e+03 1.149e-04 y = log(x1 + cos(exp(x2))) + (log(cos(cos(0.36 * (x1 + 2.7... ))) + ((x2 * x2) * x2)) * 1.1) 28 1.236e+03 2.679e-05 y = (max(log(cos(cos((x1 + 2.9) * 0.36)) + (x2 * (x2 * x2)... )), sin((x1 + x1) * 0.36)) * 1.1) + log(x1 - -1.3) ─────────────────────────────────────────────────────────────────────────────────────────────────── ════════════════════════════════════════════════════════════════════════════════════════════════════ Press 'q' and then <enter> to stop execution early. Expressions evaluated per second: 1.580e+04 Progress: 2382 / 3100 total iterations (76.839%) ════════════════════════════════════════════════════════════════════════════════════════════════════ ─────────────────────────────────────────────────────────────────────────────────────────────────── Complexity Loss Score Equation 1 1.569e+04 0.000e+00 y = 14 4 9.582e+03 1.645e-01 y = log(x2) + 11 5 1.953e+03 1.591e+00 y = (x2 ^ 0.27) / 0.16 6 NaN -0.000e+00 y = abs(x2 + (x1 * x1)) 7 1.258e+03 2.911e+01 y = (log(x2) * 3.2) + log(x1) 9 1.242e+03 6.381e-03 y = (log(x2 + 0.1) * 3.2) + log(x1) 11 1.238e+03 1.545e-03 y = (log((x2 * x2) + 0.39) * 1.6) + log(x1) 13 1.238e+03 8.899e-05 y = (log((x2 * (x2 * x2)) + 0.85) * 1.1) + log(x1) 15 1.238e+03 1.067e-04 y = (log(x1 + 55) + (log((x2 * x2) + 0.43) + -2.2)) * 1.6 17 1.238e+03 7.066e-05 y = log(x1) + (1.1 * log(((x2 * x2) * x2) + cos(cos(x1 * 0... .37)))) 18 1.237e+03 2.981e-04 y = (log(((x2 * x2) * x2) + max(0.63, cos(x1 * 0.9))) * 1.... 1) + log(x1) 19 1.236e+03 7.874e-04 y = log(x1) + (log(cos(cos((2.7 + x1) * 0.36)) + (x2 * (x2... * x2))) * 1.1) 21 NaN -0.000e+00 y = max(abs(min(x1 * (x2 + -1.3), abs(1.3 * ((x2 * ((x2 * ... 1) - -0.28)) - -0.28)))), -0.61) 22 1.236e+03 2.911e+01 y = log(x1 - -0.78) + (max(log(x2 * ((x2 * x2) + 0.47)), s... in((x1 + x1) * 0.36)) * 1.1) 23 1.236e+03 1.154e-04 y = log(x1 + cos(exp(x2))) + (log((x2 * (x2 * x2)) + cos(c... os((x1 + 2.6) * 0.36))) * 1.1) 25 1.236e+03 9.757e-06 y = log((x1 + 0.099) + cos(exp(x2))) + (log(cos(cos(0.36 *... (x1 + 2.7))) + ((x2 * x2) * x2)) * 1.1) 28 1.236e+03 3.796e-05 y = (max(log(cos(cos((x1 + 2.9) * 0.36)) + (x2 * (x2 * x2)... )), sin((x1 + x1) * 0.36)) * 1.1) + log(x1 - -1.3) ─────────────────────────────────────────────────────────────────────────────────────────────────── ════════════════════════════════════════════════════════════════════════════════════════════════════ Press 'q' and then <enter> to stop execution early. Expressions evaluated per second: 1.600e+04 Progress: 2452 / 3100 total iterations (79.097%) ════════════════════════════════════════════════════════════════════════════════════════════════════ ─────────────────────────────────────────────────────────────────────────────────────────────────── Complexity Loss Score Equation 1 1.569e+04 0.000e+00 y = 14 4 9.582e+03 1.645e-01 y = log(x2) + 11 5 1.953e+03 1.591e+00 y = (x2 ^ 0.27) / 0.16 6 NaN -0.000e+00 y = abs(x2 + (x1 * x1)) 7 1.258e+03 2.911e+01 y = (log(x2) * 3.2) + log(x1) 9 1.242e+03 6.381e-03 y = (log(x2 + 0.1) * 3.2) + log(x1) 11 1.238e+03 1.545e-03 y = (log((x2 * x2) + 0.39) * 1.6) + log(x1) 13 1.238e+03 8.899e-05 y = (log((x2 * (x2 * x2)) + 0.85) * 1.1) + log(x1) 15 1.238e+03 1.067e-04 y = (log(x1 + 55) + (log((x2 * x2) + 0.43) + -2.2)) * 1.6 17 1.237e+03 3.646e-04 y = (log(((x2 * x2) * x2) + abs(cos(x1 * 0.9))) * 1.1) + l... og(x1) 19 1.236e+03 2.489e-04 y = log(x1) + (log(cos(cos((x1 + 2.7) * 0.36)) + (x2 * (x2... * x2))) * 1.1) 21 NaN -0.000e+00 y = max(abs(min(x1 * (x2 + -1.3), abs(1.3 * ((x2 * ((x2 * ... 1) - -0.28)) - -0.28)))), -0.61) 22 1.236e+03 2.911e+01 y = log(x1 - -0.78) + (max(log(x2 * ((x2 * x2) + 0.47)), s... in((x1 + x1) * 0.36)) * 1.1) 23 1.236e+03 1.154e-04 y = log(cos(exp(x2)) + x1) + (log(cos(cos((x1 + 2.6) * 0.3... 6)) + (x2 * (x2 * x2))) * 1.1) 25 1.236e+03 1.106e-05 y = log((x1 + 0.36) + cos(exp(x2))) + (log(cos(cos(0.36 * ... (x1 + 2.7))) + ((x2 * x2) * x2)) * 1.1) 28 1.236e+03 3.709e-05 y = (max(log(cos(cos((x1 + 2.9) * 0.36)) + (x2 * (x2 * x2)... )), sin((x1 + x1) * 0.36)) * 1.1) + log(x1 - -1.3) ─────────────────────────────────────────────────────────────────────────────────────────────────── ════════════════════════════════════════════════════════════════════════════════════════════════════ Press 'q' and then <enter> to stop execution early. Expressions evaluated per second: 1.570e+04 Progress: 2523 / 3100 total iterations (81.387%) ════════════════════════════════════════════════════════════════════════════════════════════════════ ─────────────────────────────────────────────────────────────────────────────────────────────────── Complexity Loss Score Equation 1 1.569e+04 0.000e+00 y = 14 4 9.582e+03 1.645e-01 y = log(x2) + 11 5 1.953e+03 1.591e+00 y = (x2 ^ 0.27) / 0.16 6 NaN -0.000e+00 y = abs(x2 + (x1 * x1)) 7 1.258e+03 2.911e+01 y = (log(x2) * 3.2) + log(x1) 9 1.242e+03 6.381e-03 y = (log(x2 + 0.1) * 3.2) + log(x1) 11 1.238e+03 1.545e-03 y = (log((x2 * x2) + 0.39) * 1.6) + log(x1) 13 1.238e+03 8.899e-05 y = (log((x2 * (x2 * x2)) + 0.85) * 1.1) + log(x1) 15 1.238e+03 1.067e-04 y = (log(x1 + 55) + (log((x2 * x2) + 0.43) + -2.2)) * 1.6 17 1.237e+03 3.646e-04 y = (log(((x2 * x2) * x2) + abs(cos(x1 * 0.9))) * 1.1) + l... og(x1) 19 1.236e+03 2.489e-04 y = log(x1) + (log(cos(cos((x1 + 2.7) * 0.36)) + (x2 * (x2... * x2))) * 1.1) 21 NaN -0.000e+00 y = max(abs(min(x1 * (x2 + -1.3), abs(1.3 * ((x2 * ((x2 * ... 1) - -0.28)) - -0.28)))), -0.61) 22 1.236e+03 2.911e+01 y = log(x1 - -0.78) + (max(log(x2 * ((x2 * x2) + 0.47)), s... in((x1 + x1) * 0.36)) * 1.1) 23 1.236e+03 1.154e-04 y = log(cos(exp(x2)) + x1) + (log(cos(cos((x1 + 2.6) * 0.3... 6)) + (x2 * (x2 * x2))) * 1.1) 25 1.236e+03 6.965e-05 y = log(x1 + cos(0.36 + exp(x2))) + (log(cos(cos(0.36 * (x... 1 + 2.7))) + (x2 * (x2 * x2))) * 1.1) 26 1.235e+03 2.074e-05 y = log(x1 + cos(cos(0.67) + exp(x2))) + (log((x2 * (x2 * ... x2)) + cos(cos(0.36 * (x1 + 2.7)))) * 1.1) 27 1.235e+03 6.535e-06 y = log(x1 + cos(exp(x2) + max(0.52, -0.32))) + (1.1 * log... (cos(cos(0.36 * (x1 + 2.7))) + ((x2 * x2) * x2))) ─────────────────────────────────────────────────────────────────────────────────────────────────── ════════════════════════════════════════════════════════════════════════════════════════════════════ Press 'q' and then <enter> to stop execution early. Expressions evaluated per second: 1.580e+04 Progress: 2596 / 3100 total iterations (83.742%) ════════════════════════════════════════════════════════════════════════════════════════════════════ ─────────────────────────────────────────────────────────────────────────────────────────────────── Complexity Loss Score Equation 1 1.569e+04 0.000e+00 y = 14 4 9.582e+03 1.645e-01 y = log(x2) + 11 5 1.953e+03 1.591e+00 y = (x2 ^ 0.27) / 0.16 6 NaN -0.000e+00 y = abs(x2 + (x1 * x1)) 7 1.258e+03 2.911e+01 y = (log(x2) * 3.2) + log(x1) 9 1.242e+03 6.381e-03 y = (log(x2 + 0.1) * 3.2) + log(x1) 11 1.238e+03 1.545e-03 y = (log((x2 * x2) + 0.39) * 1.6) + log(x1) 13 1.238e+03 8.899e-05 y = (log((x2 * (x2 * x2)) + 0.85) * 1.1) + log(x1) 15 1.238e+03 1.067e-04 y = (log(x1 + 55) + (log((x2 * x2) + 0.43) + -2.2)) * 1.6 17 1.237e+03 3.646e-04 y = (log(((x2 * x2) * x2) + abs(cos(x1 * 0.9))) * 1.1) + l... og(x1) 19 1.236e+03 2.715e-04 y = (log((((x2 + 0.1) * x2) * x2) + abs(cos(x1 * 0.9))) * ... 1.1) + log(x1) 21 NaN -0.000e+00 y = max(abs(min(x1 * (x2 + -1.3), abs(1.3 * ((x2 * ((x2 * ... 1) - -0.28)) - -0.28)))), -0.61) 22 1.236e+03 2.911e+01 y = log(x1 - -0.78) + (max(log(x2 * ((x2 * x2) + 0.47)), s... in((x1 + x1) * 0.36)) * 1.1) 23 1.236e+03 1.154e-04 y = log(cos(exp(x2)) + x1) + (log(cos(cos((x1 + 2.6) * 0.3... 6)) + (x2 * (x2 * x2))) * 1.1) 25 1.235e+03 8.237e-05 y = log((cos(exp(x2)) + 1.4) + x1) + (log(cos(cos((x1 + 2.... 6) * 0.36)) + (x2 * (x2 * x2))) * 1.1) 27 1.235e+03 1.350e-06 y = log(x1 + cos(0.36 + (0.36 + exp(x2)))) + (1.1 * log(co... s(cos((x1 + 2.7) * 0.36)) + (x2 * (x2 * x2)))) 28 1.235e+03 2.530e-04 y = log(x1 + cos(cos(x1 * 0.36) + exp(x2))) + (1.1 * log((... (x2 * x2) * x2) + cos(cos(0.36 * (x1 + 2.7))))) 30 1.235e+03 2.005e-06 y = (log((x2 * (x2 * x2)) + cos(cos((x1 + 2.7) * 0.36))) *... 1.1) + log(cos(cos((x1 + -0.17) * 0.36) + exp(x2)) + x1) ─────────────────────────────────────────────────────────────────────────────────────────────────── ════════════════════════════════════════════════════════════════════════════════════════════════════ Press 'q' and then <enter> to stop execution early. Expressions evaluated per second: 1.590e+04 Progress: 2664 / 3100 total iterations (85.935%) ════════════════════════════════════════════════════════════════════════════════════════════════════ ─────────────────────────────────────────────────────────────────────────────────────────────────── Complexity Loss Score Equation 1 1.569e+04 0.000e+00 y = 14 4 9.582e+03 1.645e-01 y = log(x2) + 11 5 1.953e+03 1.591e+00 y = (x2 ^ 0.27) / 0.16 6 NaN -0.000e+00 y = abs(x2 + (x1 * x1)) 7 1.258e+03 2.911e+01 y = (log(x2) * 3.2) + log(x1) 9 1.242e+03 6.381e-03 y = (log(x2 + 0.1) * 3.2) + log(x1) 11 1.238e+03 1.545e-03 y = (log((x2 * x2) + 0.39) * 1.6) + log(x1) 13 1.238e+03 8.899e-05 y = (log((x2 * (x2 * x2)) + 0.85) * 1.1) + log(x1) 15 1.238e+03 1.067e-04 y = (log(x1 + 55) + (log((x2 * x2) + 0.43) + -2.2)) * 1.6 16 1.238e+03 5.095e-05 y = log(x1 + cos(x1)) + (log(((x2 * x2) * x2) + 0.86) * 1.... 1) 17 1.237e+03 6.783e-04 y = (log(((x2 * x2) * x2) + abs(cos(x1 * 0.9))) * 1.1) + l... og(x1) 19 1.236e+03 2.715e-04 y = (log((((x2 + 0.1) * x2) * x2) + abs(cos(x1 * 0.9))) * ... 1.1) + log(x1) 21 NaN -0.000e+00 y = max(abs(min(x1 * (x2 + -1.3), abs(1.3 * ((x2 * ((x2 * ... 1) - -0.28)) - -0.28)))), -0.61) 22 1.236e+03 2.911e+01 y = log(x1 - -0.78) + (max(log(x2 * ((x2 * x2) + 0.47)), s... in((x1 + x1) * 0.36)) * 1.1) 23 1.236e+03 1.154e-04 y = log(cos(exp(x2)) + x1) + (log(cos(cos((x1 + 2.6) * 0.3... 6)) + (x2 * (x2 * x2))) * 1.1) 25 1.235e+03 8.237e-05 y = log((cos(exp(x2)) + 1.4) + x1) + (log(cos(cos((x1 + 2.... 6) * 0.36)) + (x2 * (x2 * x2))) * 1.1) 26 1.235e+03 1.207e-04 y = log((cos(exp(x2)) + x1) + cos(x1)) + (log(cos(cos((x1 ... + 2.7) * 0.36)) + (x2 * (x2 * x2))) * 1.1) 28 1.235e+03 6.752e-05 y = log(x1 + cos(cos(x1 * 0.36) + exp(x2))) + (1.1 * log((... (x2 * x2) * x2) + cos(cos(0.36 * (x1 + 2.7))))) 29 1.235e+03 1.091e-04 y = log(cos(x1) + (x1 + cos(exp(x2 - log(0.72))))) + (log(... cos(cos((x1 + 2.7) * 0.36)) + ((x2 * x2) * x2)) * 1.1) ─────────────────────────────────────────────────────────────────────────────────────────────────── ════════════════════════════════════════════════════════════════════════════════════════════════════ Press 'q' and then <enter> to stop execution early. Expressions evaluated per second: 1.580e+04 Progress: 2733 / 3100 total iterations (88.161%) ════════════════════════════════════════════════════════════════════════════════════════════════════ ─────────────────────────────────────────────────────────────────────────────────────────────────── Complexity Loss Score Equation 1 1.569e+04 0.000e+00 y = 14 4 9.582e+03 1.645e-01 y = log(x2) + 11 5 1.953e+03 1.591e+00 y = (x2 ^ 0.27) / 0.16 6 NaN -0.000e+00 y = abs(x2 + (x1 * x1)) 7 1.258e+03 2.911e+01 y = (log(x2) * 3.2) + log(x1) 9 1.242e+03 6.381e-03 y = (log(x2 + 0.1) * 3.2) + log(x1) 11 1.238e+03 1.545e-03 y = (log((x2 * x2) + 0.39) * 1.6) + log(x1) 13 1.238e+03 8.899e-05 y = (log((x2 * (x2 * x2)) + 0.85) * 1.1) + log(x1) 15 1.238e+03 1.067e-04 y = ((log(x1 + 55) + log((x2 * x2) + 0.43)) + -2.2) * 1.6 16 1.238e+03 5.095e-05 y = log(x1 + cos(x1)) + (log(((x2 * x2) * x2) + 0.86) * 1.... 1) 17 1.237e+03 6.783e-04 y = (log(((x2 * x2) * x2) + abs(cos(x1 * 0.9))) * 1.1) + l... og(x1) 19 1.236e+03 2.715e-04 y = (log((((x2 + 0.1) * x2) * x2) + abs(cos(x1 * 0.9))) * ... 1.1) + log(x1) 21 NaN -0.000e+00 y = max(abs(min(x1 * (x2 + -1.3), abs(1.3 * ((x2 * ((x2 * ... 1) - -0.28)) - -0.28)))), -0.61) 22 1.236e+03 2.911e+01 y = log(x1 - -0.78) + (max(log(x2 * ((x2 * x2) + 0.47)), s... in((x1 + x1) * 0.36)) * 1.1) 23 1.236e+03 1.154e-04 y = log(cos(exp(x2)) + x1) + (log(cos(cos((x1 + 2.6) * 0.3... 6)) + (x2 * (x2 * x2))) * 1.1) 25 1.235e+03 8.237e-05 y = log((cos(exp(x2)) + 1.4) + x1) + (log(cos(cos((x1 + 2.... 6) * 0.36)) + (x2 * (x2 * x2))) * 1.1) 26 1.235e+03 1.207e-04 y = log((cos(exp(x2)) + x1) + cos(x1)) + (log(cos(cos((x1 ... + 2.7) * 0.36)) + (x2 * (x2 * x2))) * 1.1) 27 1.235e+03 5.332e-04 y = log((x1 + cos(exp(x2 - -0.32))) + 0.95) + (log(((x2 * ... x2) * x2) + cos(cos((x1 + 2.7) * 0.36))) * 1.1) 29 1.235e+03 2.171e-06 y = log(cos(inv(x1)) + (cos(exp(x2 - -0.32)) + x1)) + (log... (cos(cos((x1 + 2.7) * 0.36)) + ((x2 * x2) * x2)) * 1.1) 30 1.235e+03 6.740e-05 y = log(cos(sin(x2)) + (x1 + cos(exp(x2 - log(0.72))))) + ... (log(cos(cos((x1 + 2.7) * 0.36)) + ((x2 * x2) * x2)) * 1.1... ) ─────────────────────────────────────────────────────────────────────────────────────────────────── ════════════════════════════════════════════════════════════════════════════════════════════════════ Press 'q' and then <enter> to stop execution early. Expressions evaluated per second: 1.540e+04 Progress: 2797 / 3100 total iterations (90.226%) ════════════════════════════════════════════════════════════════════════════════════════════════════ ─────────────────────────────────────────────────────────────────────────────────────────────────── Complexity Loss Score Equation 1 1.569e+04 0.000e+00 y = 14 4 9.582e+03 1.645e-01 y = log(x2) + 11 5 1.953e+03 1.591e+00 y = (x2 ^ 0.27) / 0.16 6 NaN -0.000e+00 y = abs(x2 + (x1 * x1)) 7 1.258e+03 2.911e+01 y = (log(x2) * 3.2) + log(x1) 9 1.242e+03 6.381e-03 y = (log(x2 + 0.1) * 3.2) + log(x1) 11 1.238e+03 1.545e-03 y = (log((x2 * x2) + 0.39) * 1.6) + log(x1) 13 1.238e+03 8.899e-05 y = (log((x2 * (x2 * x2)) + 0.85) * 1.1) + log(x1) 15 1.238e+03 1.067e-04 y = ((log(x1 + 55) + log((x2 * x2) + 0.43)) + -2.2) * 1.6 16 1.238e+03 5.095e-05 y = log(x1 + cos(x1)) + (log(((x2 * x2) * x2) + 0.86) * 1.... 1) 17 1.237e+03 6.783e-04 y = (log(((x2 * x2) * x2) + abs(cos(x1 * 0.9))) * 1.1) + l... og(x1) 19 1.236e+03 4.120e-04 y = log(x1) + (log(abs(cos(x1 * 0.9)) + ((x2 * (x2 + 0.093... )) * x2)) * 1.1) 21 NaN -0.000e+00 y = max(abs(min(x1 * (x2 + -1.3), abs(1.3 * ((x2 * ((x2 * ... 1) - -0.28)) - -0.28)))), -0.61) 22 1.236e+03 2.911e+01 y = abs((log(abs(cos(x1 * 0.9)) + (((x2 * x2) * x2) + 0.19... )) * 1.1) + log(x1 - -1.3)) 25 1.235e+03 4.521e-05 y = log((cos(exp(x2)) + 1.4) + x1) + (log(cos(cos((x1 + 2.... 6) * 0.36)) + (x2 * (x2 * x2))) * 1.1) 26 1.235e+03 1.207e-04 y = log((cos(exp(x2)) + x1) + cos(x1)) + (log(cos(cos((x1 ... + 2.7) * 0.36)) + (x2 * (x2 * x2))) * 1.1) 27 1.235e+03 5.711e-04 y = log(x1 + (cos(exp(x2 - -0.32)) + 1)) + (log(cos(cos((x... 1 + 2.7) * 0.36)) + ((x2 * x2) * x2)) * 1.1) 29 1.235e+03 3.320e-05 y = log((x1 + cos(sin(x2))) + cos(exp(x2 - -0.32))) + (log... (((x2 * x2) * x2) + cos(cos((x1 + 2.7) * 0.36))) * 1.1) ─────────────────────────────────────────────────────────────────────────────────────────────────── ════════════════════════════════════════════════════════════════════════════════════════════════════ Press 'q' and then <enter> to stop execution early. Expressions evaluated per second: 1.570e+04 Progress: 2875 / 3100 total iterations (92.742%) ════════════════════════════════════════════════════════════════════════════════════════════════════ ─────────────────────────────────────────────────────────────────────────────────────────────────── Complexity Loss Score Equation 1 1.569e+04 0.000e+00 y = 14 4 9.582e+03 1.645e-01 y = log(x2) + 11 5 1.953e+03 1.591e+00 y = (x2 ^ 0.27) / 0.16 6 NaN -0.000e+00 y = abs(x2 + (x1 * x1)) 7 1.258e+03 2.911e+01 y = (log(x2) * 3.2) + log(x1) 9 1.242e+03 6.381e-03 y = (log(x2 + 0.1) * 3.2) + log(x1) 11 1.238e+03 1.545e-03 y = (log((x2 * x2) + 0.39) * 1.6) + log(x1) 13 1.238e+03 8.899e-05 y = (log((x2 * (x2 * x2)) + 0.85) * 1.1) + log(x1) 15 1.238e+03 1.067e-04 y = ((log(x1 + 55) + log((x2 * x2) + 0.43)) + -2.2) * 1.6 16 1.238e+03 5.095e-05 y = log(x1 + cos(x1)) + (log(((x2 * x2) * x2) + 0.86) * 1.... 1) 17 1.237e+03 6.933e-04 y = (log(((x2 * x2) * x2) + abs(cos(x1 * 0.9))) * 1.1) + l... og(x1) 19 1.236e+03 4.045e-04 y = log(x1) + (log(abs(cos(x1 * 0.9)) + ((x2 * (x2 + 0.093... )) * x2)) * 1.1) 21 NaN -0.000e+00 y = max(abs(min(x1 * (x2 + -1.3), abs(1.3 * ((x2 * ((x2 * ... 1) - -0.28)) - -0.28)))), -0.61) 22 1.236e+03 2.911e+01 y = abs((log(abs(cos(x1 * 0.9)) + (((x2 * x2) * x2) + 0.19... )) * 1.1) + log(x1 - -1.3)) 25 1.235e+03 4.526e-05 y = log(x1 + (cos(exp(x2)) + 1.4)) + (log((x2 * (x2 * x2))... + cos(cos((x1 + 2.6) * 0.36))) * 1.1) 26 1.235e+03 1.205e-04 y = log((cos(exp(x2)) + x1) + cos(x1)) + (log(cos(cos((x1 ... + 2.7) * 0.36)) + (x2 * (x2 * x2))) * 1.1) 27 1.235e+03 5.711e-04 y = log(x1 + (cos(exp(x2 - -0.32)) + 1)) + (log(cos(cos((x... 1 + 2.7) * 0.36)) + ((x2 * x2) * x2)) * 1.1) 29 1.235e+03 3.320e-05 y = log((x1 + cos(sin(x2))) + cos(exp(x2 - -0.32))) + (log... (((x2 * x2) * x2) + cos(cos((x1 + 2.7) * 0.36))) * 1.1) ─────────────────────────────────────────────────────────────────────────────────────────────────── ════════════════════════════════════════════════════════════════════════════════════════════════════ Press 'q' and then <enter> to stop execution early. Expressions evaluated per second: 1.580e+04 Progress: 2948 / 3100 total iterations (95.097%) ════════════════════════════════════════════════════════════════════════════════════════════════════ ─────────────────────────────────────────────────────────────────────────────────────────────────── Complexity Loss Score Equation 1 1.569e+04 0.000e+00 y = 14 4 9.582e+03 1.645e-01 y = log(x2) + 11 5 1.953e+03 1.591e+00 y = (x2 ^ 0.27) / 0.16 6 NaN -0.000e+00 y = abs(x2 + (x1 * x1)) 7 1.258e+03 2.911e+01 y = (log(x2) * 3.2) + log(x1) 9 1.242e+03 6.381e-03 y = (log(x2 + 0.1) * 3.2) + log(x1) 11 1.238e+03 1.545e-03 y = (log((x2 * x2) + 0.39) * 1.6) + log(x1) 13 1.238e+03 1.094e-04 y = log(x1) + (log(((x2 + -0.08) * x2) - -0.52) * 1.6) 15 1.238e+03 8.633e-05 y = ((log(x1 + 55) + log((x2 * x2) + 0.43)) + -2.2) * 1.6 16 1.238e+03 5.095e-05 y = log(x1 + cos(x1)) + (log(((x2 * x2) * x2) + 0.86) * 1.... 1) 17 1.237e+03 6.933e-04 y = (log(((x2 * x2) * x2) + abs(cos(x1 * 0.9))) * 1.1) + l... og(x1) 19 1.236e+03 4.045e-04 y = log(x1) + (log(abs(cos(x1 * 0.9)) + ((x2 * (x2 + 0.093... )) * x2)) * 1.1) 21 NaN -0.000e+00 y = max(abs(min(x1 * (x2 + -1.3), abs(1.3 * ((x2 * ((x2 * ... 1) - -0.28)) - -0.28)))), -0.61) 22 1.235e+03 2.911e+01 y = abs((log(((x2 * x2) * x2) + abs(cos(x1 * 0.9) + 0.19))... * 1.1) + log(x1 - -1.3)) 23 1.235e+03 9.748e-06 y = log(cos(exp(x2)) + x1) + (log(cos(cos((x1 + -38) * 47)... ) + ((x2 * x2) * x2)) * 1.1) 26 1.235e+03 1.573e-05 y = (log(((x2 * x2) * x2) + cos(cos((x1 + 2.7) * 0.36))) *... 1.1) + log((x1 + cos(exp(x2))) + cos(x1)) 27 1.235e+03 5.710e-04 y = log(x1 + (cos(exp(x2 - -0.32)) + 1)) + (log(cos(cos((x... 1 + 2.7) * 0.36)) + ((x2 * x2) * x2)) * 1.1) 29 1.235e+03 3.320e-05 y = log((x1 + cos(sin(x2))) + cos(exp(x2 - -0.32))) + (log... (((x2 * x2) * x2) + cos(cos((x1 + 2.7) * 0.36))) * 1.1) ─────────────────────────────────────────────────────────────────────────────────────────────────── ════════════════════════════════════════════════════════════════════════════════════════════════════ Press 'q' and then <enter> to stop execution early. Expressions evaluated per second: 1.580e+04 Progress: 3013 / 3100 total iterations (97.194%) ════════════════════════════════════════════════════════════════════════════════════════════════════ ─────────────────────────────────────────────────────────────────────────────────────────────────── Complexity Loss Score Equation 1 1.569e+04 0.000e+00 y = 14 4 9.582e+03 1.645e-01 y = log(x2) + 11 5 1.953e+03 1.591e+00 y = (x2 ^ 0.27) / 0.16 6 NaN -0.000e+00 y = abs(x2 + (x1 * x1)) 7 1.258e+03 2.911e+01 y = (log(x2) * 3.2) + log(x1) 9 1.242e+03 6.381e-03 y = (log(x2 + 0.1) * 3.2) + log(x1) 11 1.238e+03 1.545e-03 y = (log((x2 * x2) + 0.39) * 1.6) + log(x1) 13 1.238e+03 1.094e-04 y = log(x1) + (log(((x2 + -0.08) * x2) - -0.52) * 1.6) 15 1.238e+03 8.633e-05 y = ((log(x1 + 55) + log((x2 * x2) + 0.43)) + -2.2) * 1.6 16 1.238e+03 5.095e-05 y = log(x1 + cos(x1)) + (log(((x2 * x2) * x2) + 0.86) * 1.... 1) 17 1.237e+03 6.933e-04 y = (log(((x2 * x2) * x2) + abs(cos(x1 * 0.9))) * 1.1) + l... og(x1) 19 1.236e+03 4.045e-04 y = log(x1) + (log(abs(cos(x1 * 0.9)) + ((x2 * (x2 + 0.093... )) * x2)) * 1.1) 21 NaN -0.000e+00 y = max(abs(min(x1 * (x2 + -1.3), abs(1.3 * ((x2 * ((x2 * ... 1) - -0.28)) - -0.28)))), -0.61) 22 1.235e+03 2.911e+01 y = abs((log(((x2 * x2) * x2) + abs(cos(x1 * 0.9) + 0.19))... * 1.1) + log(x1 - -1.3)) 23 1.235e+03 9.748e-06 y = log(cos(exp(x2)) + x1) + (log(cos(cos((x1 + -38) * 47)... ) + ((x2 * x2) * x2)) * 1.1) 25 1.235e+03 4.730e-05 y = (log(((x2 * x2) * x2) + cos(cos((x1 + 2.7) * 0.36))) *... 1.1) + log(cos(exp(x2 - -0.32)) + x1) 27 1.235e+03 2.972e-04 y = (log(((x2 * x2) * x2) + cos(cos((x1 + 2.7) * 0.36))) *... 1.1) + log(cos(exp(x2 - -0.32)) + (x1 + 1)) ─────────────────────────────────────────────────────────────────────────────────────────────────── ════════════════════════════════════════════════════════════════════════════════════════════════════ Press 'q' and then <enter> to stop execution early. Expressions evaluated per second: 1.590e+04 Progress: 3085 / 3100 total iterations (99.516%) ════════════════════════════════════════════════════════════════════════════════════════════════════ ─────────────────────────────────────────────────────────────────────────────────────────────────── Complexity Loss Score Equation 1 1.569e+04 0.000e+00 y = 14 4 9.582e+03 1.645e-01 y = log(x2) + 11 5 1.953e+03 1.591e+00 y = (x2 ^ 0.27) / 0.16 6 NaN -0.000e+00 y = abs(x2 + (x1 * x1)) 7 1.258e+03 2.911e+01 y = (log(x2) * 3.2) + log(x1) 9 1.242e+03 6.381e-03 y = (log(x2 + 0.1) * 3.2) + log(x1) 11 1.238e+03 1.545e-03 y = (log((x2 * x2) + 0.39) * 1.6) + log(x1) 13 1.238e+03 1.094e-04 y = log(x1) + (log(((x2 + -0.08) * x2) - -0.52) * 1.6) 15 1.238e+03 8.633e-05 y = ((log(x1 + 55) + log((x2 * x2) + 0.43)) + -2.2) * 1.6 16 1.238e+03 5.095e-05 y = log(x1 + cos(x1)) + (log(((x2 * x2) * x2) + 0.86) * 1.... 1) 17 1.237e+03 6.933e-04 y = (log((x2 * (x2 * x2)) + abs(cos(x1 * 0.9))) * 1.1) + l... og(x1) 19 1.236e+03 4.045e-04 y = log(x1) + (log(abs(cos(x1 * 0.9)) + ((x2 * (x2 + 0.093... )) * x2)) * 1.1) 20 1.236e+03 1.332e-04 y = (log((((x2 * x2) + 0.17) * x2) + abs(cos(abs(x1 * 0.9)... ))) * 1.1) + log(x1) 21 NaN -0.000e+00 y = max(abs(min(x1 * (x2 + -1.3), abs(1.3 * ((x2 * ((x2 * ... 1) - -0.28)) - -0.28)))), -0.61) 22 1.235e+03 2.911e+01 y = abs((log(((x2 * x2) * x2) + abs(cos(x1 * 0.9) + 0.19))... * 1.1) + log(x1 - -1.3)) 23 1.235e+03 6.418e-05 y = (log((x2 * (x2 * x2)) + cos(cos((x1 + -38) * 47))) * 1... .1) + log(exp(cos(x2)) + x1) 25 1.235e+03 2.009e-05 y = (log(((x2 * x2) * x2) + cos(cos((x1 + 2.7) * 0.36))) *... 1.1) + log(cos(exp(x2 - -0.32)) + x1) 27 1.235e+03 2.972e-04 y = (log(((x2 * x2) * x2) + cos(cos((x1 + 2.7) * 0.36))) *... 1.1) + log(cos(exp(x2 - -0.32)) + (x1 + 1)) ─────────────────────────────────────────────────────────────────────────────────────────────────── ════════════════════════════════════════════════════════════════════════════════════════════════════ Press 'q' and then <enter> to stop execution early. ─────────────────────────────────────────────────────────────────────────────────────────────────── Complexity Loss Score Equation 1 1.569e+04 0.000e+00 y = 14 4 9.582e+03 1.645e-01 y = log(x2) + 11 5 1.953e+03 1.591e+00 y = (x2 ^ 0.27) / 0.16 6 NaN -0.000e+00 y = abs(x2 + (x1 * x1)) 7 1.258e+03 2.911e+01 y = (log(x2) * 3.2) + log(x1) 9 1.242e+03 6.381e-03 y = (log(x2 + 0.1) * 3.2) + log(x1) 11 1.238e+03 1.545e-03 y = (log((x2 * x2) + 0.39) * 1.6) + log(x1) 13 1.238e+03 1.094e-04 y = log(x1) + (log(((x2 + -0.08) * x2) - -0.52) * 1.6) 15 1.238e+03 8.633e-05 y = ((log(x1 + 55) + log((x2 * x2) + 0.43)) + -2.2) * 1.6 16 1.238e+03 5.295e-05 y = log(x1 + cos(x1)) + (log(((x2 * x2) * x2) + 0.84) * 1.... 1) 17 1.237e+03 6.913e-04 y = (log((x2 * (x2 * x2)) + abs(cos(x1 * 0.9))) * 1.1) + l... og(x1) 18 1.237e+03 1.384e-05 y = (log(x2 * ((x2 * x2) + abs(abs(cos(x1 * 0.9))))) * 1.1... ) + log(x1) 19 1.236e+03 7.951e-04 y = log(x1) + (log(abs(cos(x1 * 0.9)) + ((x2 * (x2 + 0.093... )) * x2)) * 1.1) 20 1.236e+03 1.332e-04 y = (log((((x2 * x2) + 0.17) * x2) + abs(cos(abs(x1 * 0.9)... ))) * 1.1) + log(x1) 21 NaN -0.000e+00 y = max(abs(min(x1 * (x2 + -1.3), abs(1.3 * ((x2 * ((x2 * ... 1) - -0.28)) - -0.28)))), -0.61) 22 1.235e+03 2.911e+01 y = abs((log(((x2 * x2) * x2) + abs(cos(x1 * 0.9) + 0.19))... * 1.1) + log(x1 - -1.3)) 23 1.235e+03 6.418e-05 y = (log((x2 * (x2 * x2)) + cos(cos((x1 + -38) * 47))) * 1... .1) + log(exp(cos(x2)) + x1) 25 1.235e+03 2.009e-05 y = (log(((x2 * x2) * x2) + cos(cos((x1 + 2.7) * 0.36))) *... 1.1) + log(cos(exp(x2 - -0.32)) + x1) 27 1.235e+03 2.972e-04 y = (log(((x2 * x2) * x2) + cos(cos((x1 + 2.7) * 0.36))) *... 1.1) + log(cos(exp(x2 - -0.32)) + (x1 + 1)) ───────────────────────────────────────────────────────────────────────────────────────────────────
[ Info: Final population:
# Organise results into dictionary
report_mach = report(mach);
report_dict = Dict(pairs(report_mach));
delete!(report_dict, :best_idx);
delete!(report_dict, :equation_strings);
# delete!(report_dict, :equations);
# Organise into dataframe for easy inspection
report_df = DataFrame(report_dict)
report_df[!, :score_rank] = competerank(-report_df.scores)
report_df
# Best result (tradeoff between simplicity and fit) has score_rank=1
| Row | complexities | equations | losses | scores | score_rank |
|---|---|---|---|---|---|
| Int64 | Expressi… | Float64 | Float64 | Int64 | |
| 1 | 1 | 14.068558205436728 | 15694.8 | 0.0 | 17 |
| 2 | 4 | log(x2) + 10.938769112025996 | 9582.26 | 0.164472 | 4 |
| 3 | 5 | (x2 ^ 0.26680069158198166) / 0.1572060212756326 | 1952.59 | 1.59076 | 3 |
| 4 | 6 | abs(x2 + (x1 * x1)) | NaN | -0.0 | 17 |
| 5 | 7 | (log(x2) * 3.196021650984334) + log(x1) | 1258.04 | 29.1122 | 1 |
| 6 | 9 | (log(x2 + 0.10433612638453922) * 3.1864822575299705) + log(x1) | 1242.09 | 0.00638053 | 5 |
| 7 | 11 | (log((x2 * x2) + 0.3881369548374337) * 1.5966881709339782) + log(x1) | 1238.26 | 0.00154464 | 6 |
| 8 | 13 | log(x1) + (log(((x2 + -0.080226680804593) * x2) - -0.5159720757114163) * 1.5981055309494443) | 1237.99 | 0.00010935 | 11 |
| 9 | 15 | ((log(x1 + 54.54962320170843) + log((x2 * x2) + 0.4340913777559912)) + -2.1935258050166895) * 1.6017371103420204 | 1237.78 | 8.63324e-5 | 12 |
| 10 | 16 | log(x1 + cos(x1)) + (log(((x2 * x2) * x2) + 0.8425998985406917) * 1.0649352583974612) | 1237.71 | 5.29471e-5 | 14 |
| 11 | 17 | (log((x2 * (x2 * x2)) + abs(cos(x1 * 0.9014283629777021))) * 1.0650641096990454) + log(x1) | 1236.85 | 0.000691325 | 8 |
| 12 | 18 | (log(x2 * ((x2 * x2) + abs(abs(cos(x1 * 0.9015532213937991))))) * 1.0641195284322713) + log(x1) | 1236.84 | 1.38353e-5 | 16 |
| 13 | 19 | log(x1) + (log(abs(cos(x1 * 0.9015532213937991)) + ((x2 * (x2 + 0.09304239920770713)) * x2)) * 1.0641195284322713) | 1235.85 | 0.000795129 | 7 |
| 14 | 20 | (log((((x2 * x2) + 0.17485559140862356) * x2) + abs(cos(abs(x1 * 0.9017354766511351)))) * 1.0648010444557892) + log(x1) | 1235.69 | 0.000133191 | 10 |
| 15 | 21 | max(abs(min(x1 * (x2 + -1.2690492468988057), abs(1.2970182176487457 * ((x2 * ((x2 * 1.0151515821310346) - -0.27892325566236964)) - -0.27892325566236964)))), -0.61076094177502) | NaN | -0.0 | 17 |
| 16 | 22 | abs((log(((x2 * x2) * x2) + abs(cos(x1 * 0.9017439507029751) + 0.1919884994647813)) * 1.0632820001444099) + log(x1 - -1.2821806687182897)) | 1235.39 | 29.1122 | 1 |
| 17 | 23 | (log((x2 * (x2 * x2)) + cos(cos((x1 + -37.63698947241321) * 47.19204007405283))) * 1.0634084183145165) + log(exp(cos(x2)) + x1) | 1235.31 | 6.41767e-5 | 13 |
| 18 | 25 | (log(((x2 * x2) * x2) + cos(cos((x1 + 2.6840423120808925) * 0.3598018866049952))) * 1.063656648794635) + log(cos(exp(x2 - -0.32460266408500144)) + x1) | 1235.26 | 2.0086e-5 | 15 |
| 19 | 27 | (log(((x2 * x2) * x2) + cos(cos((x1 + 2.6840423120808925) * 0.3598018866049952))) * 1.063656648794635) + log(cos(exp(x2 - -0.32460266408500144)) + (x1 + 0.9999668563267318)) | 1234.53 | 0.000297229 | 9 |
# Identify best expression
# best_expression = report_mach[2][report_mach[1]] # Best expression according to report_mach. Sometimes produces unexpected results.
best_expression = report_mach[2][findfirst(report_df.score_rank .== 1)] # Best expression according to score_rank
best_expression_eqn = node_to_symbolic(best_expression)
best_expression_eqn_simp = simplify(best_expression_eqn)
# display latext output
display(best_expression_eqn_simp)
# print text
println(best_expression_eqn_simp)
log(x1) + (3.196021650984334 * log(x2))
# Apply link function to expression
@variables η
sym_expr = linkinv(LinkFunctionChoice, η)
best_exp_wLink = substitute(sym_expr, Dict(η => best_expression_eqn_simp))
best_exp_wLink = safe_simplify(best_exp_wLink)
display(best_exp_wLink)
println(best_exp_wLink)
exp(log(x1) + (3.196021650984334 * log(x2)))
Visualise Fit¶
# Fitted Mean
# Load symbolic equation as a julia function that can take arguments
best_expression_jl = build_function(best_exp_wLink, :x1, :x2, expression=Val{false});
# Actual Mean
actual_mean(x1::T, x2::T) where {T <: Real} = x1*x2^3.2 + x1
actual_mean (generic function with 1 method)
# 1. Plot Fitted (Red)
Plots.surface(
50:0.1:150, 0:0.1:30, best_expression_jl,
color = :deepskyblue3,
alpha = 0.7,
# zlims = (0,1),
xlabel = "x1", ylabel = "x2", zlabel = "Mean",
size = (1000, 600),
colorbar = false,
label = "", # Hide the default surface label
title = "Actual vs Fitted Mean"
)
# 2. Plot Actual (Blue)
Plots.surface!(
50:0.1:150, 0:0.1:30, actual_mean,
color = :firebrick2,
alpha = 0.7,
label = "" # Hide the default surface label
)
# 3. Add "fake" lines to force the legend
plot!([0], [0], [0], color = :deepskyblue3, lw = 5, label = "Fitted Mean")
plot!([0], [0], [0], color = :firebrick2, lw = 5, label = "Actual Mean")
# 3. Explicitly tell Plots where to put it
plot!(legend = :right)